【问题标题】:Using a local module instead of system installed module (Python 2.x.x)使用本地模块而不是系统安装的模块 (Python 2.x.x)
【发布时间】:2014-06-29 20:45:30
【问题描述】:

我有一个使用 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.

【问题讨论】:

  • 如果您需要处理多个版本,Virtualenv 始终是您的朋友。我会去的。

标签: python python-2.7 local python-module


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-11-28
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多