2024-04-25 08:55:58 发布
网友
我正在开发一个python应用程序。需要使用另一个位于不同目录中的库。你知道吗
文件布局如下所示: dir X有两个项目dir:
我想在当前项目中使用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
os.path.abspath(__file__)
os.path.dirname()
sys.path
一个稍微改变的方法可以让你两全其美,那就是将一个__init__.py文件添加到xLibrary的目录中,然后将包含“xLibrary”的路径添加到sys.path。随后的Python代码可以通过from xLibrary import my_module而不仅仅是import my_module导入所有内容,这可能会让习惯于标准包目录布局的人感到困惑。你知道吗
__init__.py
xLibrary
from xLibrary import my_module
import my_module
这取决于如何使用来自current-project的xLibrary。你知道吗
current-project
如果在current-project内执行类似于from xLibrary import module1的操作,xLibrary需要作为Python包进行布局:
from xLibrary import module1
xLibrary/ xLibrary/__init__.py xLibrary/module1.py # or whatever other modules the package consists of
在这种情况下,您应该在PYTHONPATH中包含xLibrary的父目录:
PYTHONPATH
PYTHONPATH=.:.. ./current-project.py
但是,如果xLibrary只是单独导入的Python模块的集合(即,如果执行import module1和import module2和current-project,并且xLibrary包含文件module1.py和module2.py),则应该像这样在PYTHONPATH中包含xLibrary:
import module1
import module2
module1.py
module2.py
bash$ ln -s ../xLibrary xLibrary
通常,将包隔离到实际包中并将其作为实际包对待是一种很好的编程实践。如果您确定要继续使用这种方法,您可以通过以下方式从python中修改搜索路径:
为了避免嵌入绝对路径,您可以使用
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
需要作为Python包进行布局:在这种情况下,您应该在
PYTHONPATH
中包含xLibrary
的父目录:但是,如果
xLibrary
只是单独导入的Python模块的集合(即,如果执行import module1
和import module2
和current-project
,并且xLibrary
包含文件module1.py
和module2.py
),则应该像这样在PYTHONPATH中包含xLibrary
:相关问题 更多 >
编程相关推荐