[英]Utilizing multiple python projects
我有一个python应用程序,我正在开发。 需要使用另一个驻留在不同目录中的库。
文件布局如下所示:dir X有两个项目目录:
我想在currentProject中使用xLibrary。 我一直在尝试编写代码,好像所有源都驻留在同一目录中并使用以下命令调用我的项目主脚本:
PYTHONPATH=.:../xLibrary ./current-project.py
但这不起作用。 我想使用它的代码库而不安装库globaly或将其复制到我的项目目录。 可能吗? 或者如果没有,我该如何处理这个问题。
将软件包隔离到实际的软件包并对其进行处理通常是一种很好的编程习惯。 如果你确定你想继续这种方法,你可以通过以下方式修改python中的搜索路径:
import sys
sys.path.append( "<path_containing_the_other_python_files>" )
要避免嵌入绝对路径,可以使用os.path.abspath(__file__)
获取当前正在执行的.py文件的绝对路径,并跟进一些os.path.dirname()
调用以构造正确的相对路径。包含到sys.path
一种略微改变的方法可以让你充分利用这两个世界,就是将一个__init__.py
文件添加到xLibrary
的目录中,然后将包含'xLibrary'的路径添加到sys.path
。 然后,随后的Python代码可以通过from xLibrary import my_module
“正确”导入所有内容,而不是仅import my_module
,这可能会使习惯于标准包目录布局的人感到困惑。
这取决于您如何使用current-project
xLibrary
。
如果您在current-project
执行类似于from xLibrary import module1
xLibrary
,则需要将xLibrary
布局为Python包:
xLibrary/
xLibrary/__init__.py
xLibrary/module1.py # or whatever other modules the package consists of
在这种情况下,您应该在PYTHONPATH
包含xLibrary
的父目录:
PYTHONPATH=.:.. ./current-project.py
但是,如果xLibrary
仅仅是一个你单独导入Python模块集合(也就是,如果你import module1
和import module2
在current-project
,与xLibrary
包含文件module1.py
和module2.py
),你应该包括xLibrary
在PYTHONPATH就像你一样:
PYTHONPATH=.:../xLibrary ./current-project.py
bash$ ln -s ../xLibrary xLibrary
首先,在PYTHONPATH变量中使用绝对路径可能更好。 其次,我认为您不需要将当前目录添加到路径中。
除此之外,最好知道哪些不起作用以及错误消息是什么。 你在那里的命令行似乎缺少分号尝试这两个:
a=12 echo $a
b=12 ;echo $b
......你会看到差异。
除了其他建议,您可以考虑virtualenv包。 在编写一个小的setup.py文件之后,您可以“虚拟安装”库并避免一般的所有PYTHONPATH重置。
这是一个非常好的做法,受到python社区的鼓励。
否则我更喜欢使用sys.path方法(由Rakis提供)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.