Para uma aplicação científica, preciso usar versões específicas dos pacotes Python numpy
, scipy
e 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 numpy
e brian2
passam. 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.