我正在使用安裝在常用文件夾(/ usr/lib64/....)中的NumPy 1.4.1的計算機羣集。因爲我想要使用NumPy 1.7.0,我已經安裝了它/.../myPath
,並將export PYTHONPATH=/.../myPath
添加到我的.bashrc
,使得使用import numpy
將自動加載NumPy 1.7.0。這工作正常,除了使用parallel python時的特殊性。加載在每個過程中的正確NumPy的模塊,I修改sys.path
,因爲這些過程似乎忽略了$PYTHONPATH
變量:如何告訴parallel-python進程在哪個文件夾中搜索模塊?
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
模塊。有想法該怎麼解決這個嗎?
對不起,我實際上把完整的路徑放在我的程序中。我只是在這裏用'〜'縮寫來節省空間,但很高興知道'〜'無法正常工作。 (編輯後) – 2013-03-06 17:55:53