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

时间:2014-05-12 13:03:08

标签: python python-2.7 local python-module

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

# 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 

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

谢谢, 本W。

1 个答案:

答案 0 :(得分:0)

根据the docs,Python将加载内置模块(如果可用)。如果不是,那么它会查找sys.path中的每个路径(以当前目录开头)。

但是,如果我正确读取它,标准模块与内置模块不同。通过查看sys.path可以找到标准模块,因此如果将路径放在sys.path的开头,Python将获得模块而不是标准模块。