(Möglicherweise installieren und) verwenden einer bestimmten Version von Python

(Möglicherweise installieren und) verwenden einer bestimmten Version von Python

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 numpyund brian2bestanden. Für scipyschlä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.

verwandte Informationen