使用本地模块而不是系统安装模块(Python 2.xx)

War*_*250 5 python python-module local python-2.7

我有一个与Python一起使用的集群系统和在该系统上安装的一些模块 - 但是我想使用该模块的最新版本 - 它有几种方法在旧版本中不存在,所以我构建它并且它是本地的deps在我可以访问的区域:

# From my home directory: /gpfs/env/yrq12edu

# Get the source I need for the up to date version of the module I want to install locally.
svn co svn://svn.code.sf.net/p/simupop/code/trunk simuPOP

# Install PCRE stuff...
cd pcre-8.34
./configure --prefix=/gpfs/env/yrq12edu/pcre_install
make
make install
export PATH=/gpfs/env/yrq12edu/pcre_install/bin:$PATH
export LD_LIBRARY_PATH=/gpfs/env/yrq12edu/pcre_install/lib:$LD_LIBRARY_PATH
cd ..

# Install Swig Stuff...
cd swig-3.0.0
./configure --prefix=/gpfs/env/yrq12edu/swig_install
make
make install
export PATH=/gpfs/env/yrq12edu/swig_install/bin:$PATH
cd ..

export PYTHONPATH=/gpfs/env/yrq12edu/PythonModules/lib/python2.7/site-packages

# Build the up to date simuPOP module I need locally...
cd simuPOP
python setup.py install --prefix=/gpfs/env/yrq12edu/PythonModules 
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保当我在集群中执行我的Python脚本时,它会尝试使用我的本地模块而不是系统模块?我在构建过程中明显改变了PYTHONPATH,我知道应该允许在本地加载模块,但是在选择系统安装的旧版本或我新的本地安装版本时,想知道它将加载哪个.Python会不会喜欢本地的并加载它,或者我必须指定一些强制它的选项吗?

谢谢,本W.

Boo*_*oon 0

根据文档, Python 将加载内置模块(如果可用)。如果不是,它会查找 sys.path 中的每个路径(从当前目录开始)。

但是,如果我没看错的话,标准模块与内置模块不同。标准模块是通过查找 sys.path 找到的,因此如果将路径放在 sys.path 的开头,Python 将获取您的模块而不是标准模块。