利用多个python项目

2024-04-25 08:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个python应用程序。需要使用另一个位于不同目录中的库。你知道吗

文件布局如下所示: dir X有两个项目dir:

  • 当前项目
  • X图书馆

我想在当前项目中使用xLibrary。我一直在尝试编写代码,就好像所有源代码都驻留在同一个目录中一样,并使用以下命令调用我的项目主脚本:

PYTHONPATH=.:../xLibrary ./current-project.py

但这行不通。我想使用它的代码库,而不安装库globaly或复制到我的项目的目录。有可能吗?否则,我该如何处理这个问题。你知道吗


Tags: 文件项目代码命令目录project脚本应用程序
3条回答

通常,将包隔离到实际包中并将其作为实际包对待是一种很好的编程实践。如果您确定要继续使用这种方法,您可以通过以下方式从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-projectxLibrary。你知道吗

如果在current-project内执行类似于from xLibrary import module1的操作,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 module1import module2current-project,并且xLibrary包含文件module1.pymodule2.py),则应该像这样在PYTHONPATH中包含xLibrary

PYTHONPATH=.:../xLibrary ./current-project.py
bash$ ln -s ../xLibrary xLibrary

相关问题 更多 >