Für eine wissenschaftliche Anwendung muss ich bestimmte Versionen der Python-Pakete numpy
, scipy
, und verwenden brian2
. Ich habe die richtigen Versionen auf meinem Laptop installiert und ihre Test-Suiten wie folgt ausgeführt:
>>> import numpy as np
>>> import scipy
>>> import brian2
>>> np.test()
>>> scipy.test()
>>> brian2.test()
Alle Tests bestanden.
Jetzt möchte ich dasselbe auf dem Computercluster meines Labors tun. Ich habe wieder alle korrekten Versionen installiert. In dieser neuen Umgebung werden jedoch nur die Tests numpy
und brian2
bestanden. Für scipy
schlägt ein einziger Test fehl:
======================================================================
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)
Der einzige relevante Unterschied zwischen meinem Computercluster und meinem Laptop scheint die auf ihnen ausgeführte Python-Version zu sein. Auf meinem Laptop läuft die Version 2.7.6, auf dem Cluster hingegen die Version 2.7.10.
Meine Frage lautet: Wie kann ich Version 2.7.6 lokal auf dem Cluster (d. h. lokal auf meinem Konto) installieren und diese Version dann verwenden, wenn ich IPython öffne?
Antwort1
Direkte Antwort auf Ihre Frage: Verwenden Sie virtualenv, wie hier erklärt:https://stackoverflow.com/questions/5506110/ist-es-möglich-eine-andere-version-von-python-auf-virtualenv-zu-installieren
Ihre Schlussfolgerung ist jedoch wahrscheinlich falsch, da Numpy, Scipy und Brian2 von vielen anderen Teilen des Systems abhängen, nicht nur von der Python-Version, und diese Teile wahrscheinlich auch unterschiedlich sind.
Sie sollten Numpy und Scipy verwenden, die mit der Anaconda-Python-Distribution geliefert wurden, da diese vermutlich getestet wurden. Brian2 ist nicht enthalten. Das müssen Sie selbst testen.