私は、NumPy 1.4.1 が通常のフォルダー (/usr/lib64/....) にインストールされているコンピューター クラスターで作業しています。NumPy 1.7.0 を使用したいので、それをインストールし、 NumPy 1.7.0 を自動的にロードするように/.../myPath
に追加export PYTHONPATH=/.../myPath
しました。これは、並列 pythonを使用する場合の特殊性を除いて、正常に機能します。各プロセスで正しい NumPy モジュールをロードするために、これらのプロセスは変数を無視しているように見えるため、 を変更します。.bashrc
import numpy
sys.path
$PYTHONPATH
import pp
import numpy
def try2():
sys.path.insert(0,'/.../myPath')
import numpy
a=numpy.random.rand(4,4)
return numpy.__version__
print numpy.__version__
job_server = pp.Server(2, ppservers=() )
jobs=[job_server.submit(try2,(),(),("sys",)),job_server.submit(try2,(),(),("sys",))]
for job in jobs:
print job()
出力は希望どおりです。
1.7.0
1.7.0
1.7.0
しかし、ndarray
このような引数で呼び出すと
import pp
import numpy
def try2(a):
sys.path.insert(0,'/.../myPath')
import numpy
return numpy.__version__
print numpy.__version__
a=numpy.random.rand(4,4)
job_server = pp.Server(2, ppservers=() )
jobs=[job_server.submit(try2,(a,),(),("sys",)),job_server.submit(try2,(a,),(),("sys",))]
for job in jobs:
print job()
出力は次のように変わります
1.7.0
1.4.1
1.4.1
私の解釈: サブプロセスはnumpy.ndarray
呼び出されるとすぐに引数を受け取るためnumpy
、変更する機会を得る前にという名前のモジュールを検索しますsys.path
。これを修正する方法についてのアイデアはありますか?