我是Python新手。我在一家公司,他们用Python构建了一个大型系统。他们使用一个专有系统来管理系统运行时的路径,但是现在我被要求构建一个独立的脚本,与他们系统中的一些代码交互。遗憾的是,我的独立脚本不会在他们使用的路径管理器下运行,所以我需要自己找出路径。在
例如,我有这样一句话:
from hark.tasks import REPLY_LINE
这实际上是从他们的一些旧代码复制的。在本例中,脚本可以找到hark,但是hark有一个__init__.py
文件,这就是问题的开始。所以我得到这个:
他们建造的项目实际上包括3次日志。如果我这样做:
find . -name "*logbook*"
我明白了:
meg/zurge/opt/python2.7/lib/python2.7/site-packages/logbook
meg/zurge/opt/python2.7-hark/lib/python2.7/site-packages/logbook
meg/zurge/opt/python3.4/lib/python3.4/site-packages/logbook
就像我说的,他们有一个专有的路径管理器,它通常告诉每一段代码在哪里可以找到它应该包含的包,但是我正在构建一个独立的应用程序。在
我对Python了解不多,但我想知道Python是否是一种惯用的Python方法,可以包含在如此遥远的目录中的包?在
而且,在任何人建议pip install
之前,我们根本不依赖全局安装。在
最好的解决方案可能是virtualenv或{a2}。这将允许您定义一个包含脚本所需的所有库的环境。这不会是全球性的。在
可按如下方式进行:
source /usr/local/bin/virtualenvwrapper.sh
workon hark_task_script_env || ( mkvirtualenv hark_task_script_env && pip install -r requirements.txt )
python your-script.py
virtualenvwrapper将环境安装到主目录中的一个文件夹中。普通virtualenv库将环境安装到项目中的文件夹中。除此之外,它们是等价的。在
我真的建议你用它们而不是一个合适的包管理器。如果您必须使用适当的包管理器,那么它是合理的访问包加载器为它!在
如果这真的不令人满意,那么您可以按如下方式破解包加载器(假设您使用的是*nix系统)。这是一个用zsh编写的shell脚本。如果您的系统没有可用的shell,希望您可以在支持的shell中重写它:
您可能需要更新这个脚本,将默认的python路径放在第一位,并记住这是一种非常笨拙的方法。如果一个系统上安装了多个版本的库,那么您可能最终使用的库将是定义错误的。在
使用一个合适的包管理器,即使这是最恰当的方法,也是最好的方法。在
相关问题 更多 >
编程相关推荐