(Possivelmente instalando e) usando uma versão específica do Python

(Possivelmente instalando e) usando uma versão específica do Python

Para uma aplicação científica, preciso usar versões específicas dos pacotes Python numpy, scipye brian2. Instalei as versões corretas em meu laptop e executei seus conjuntos de testes da seguinte maneira:

>>> import numpy as np
>>> import scipy
>>> import brian2
>>> np.test()
>>> scipy.test()
>>> brian2.test()

Todos os testes passam.

Agora gostaria de fazer a mesma coisa no cluster de computação do meu laboratório. Instalei novamente todas as versões corretas. Porém, neste novo ambiente, apenas os testes numpye brian2passam. Para scipy, um único teste falha:

====================================================================== 
FAIL: test_decomp_update.TestQRdelete_f.test_delete_last_p_col
----------------------------------------------------------------------     
Traceback (most recent call last):   File
"/usr/local/anaconda/lib/python2.7/site-packages/nose/case.py", line
197, in runTest
    self.test(*self.arg)   File "/home/despo/dbliss/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_update.py",
line 328, in test_delete_last_p_col
    assert_unitary(q1)   File "/home/despo/dbliss/lib/python2.7/site-packages/scipy/linalg/tests/test_decomp_update.py",
line 21, in assert_unitary
    assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol)   File
"/home/despo/dbliss/.local/lib/python2.7/site-packages/numpy/testing/utils.py",
line 1297, in assert_allclose
    verbose=verbose, header=header)   File "/home/despo/dbliss/.local/lib/python2.7/site-packages/numpy/testing/utils.py",
line 665, in assert_array_compare
    raise AssertionError(msg) AssertionError:  Not equal to tolerance rtol=0.0001, atol=2.38419e-07

(mismatch 100.0%)  x: array([[  9.999999e-01,   1.746230e-08, 
-1.490116e-08,   1.490116e-08,
         -6.146729e-08,  -6.332994e-08,   3.352761e-08,   7.450581e-08,
          3.352761e-08,   2.142042e-08,  -4.097819e-08,   4.656613e-08],...  y: array([[ 1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],...

---------------------------------------------------------------------- 
Ran 18599 tests in 253.381s

FAILED (KNOWNFAIL=97, SKIP=1165, failures=1)

Aparentemente, a única diferença relevante entre meu cluster de computação e meu laptop são as versões do Python que eles executam. Meu laptop possui a versão 2.7.6, enquanto o cluster possui a 2.7.10.

Minha pergunta é: como posso instalar a versão 2.7.6 localmente no cluster (ou seja, localmente na minha conta) e usar essa versão ao abrir o IPython?

Responder1

Resposta direta à sua pergunta: use o virtualenv conforme explicado aqui:https://stackoverflow.com/questions/5506110/is-it-possible-to-install-another-version-of-python-to-virtualenv

No entanto, sua conclusão provavelmente está incorreta porque numpy, scipy e brian2 dependem de muitos outros bits do sistema, não apenas da versão do python, e esses bits provavelmente também são diferentes.

O que você deveria fazer é usar o numpy e o scipy que acompanham a distribuição anaconda python, já que eles provavelmente foram testados. brian2 não está incluído. Você terá que testar isso sozinho.

informação relacionada