我正在尝试在python中进行相对导入。但我无法理解语法,每次我在这里搜索它,我都无法得到答案:
这是我的文件夹结构:
Root
libraries
mylibrary
__init__
projects
project
myproject.py
我想使用相对路径导入'mylibrary',这样做的语法是什么?
答案 0 :(得分:3)
您必须将目录添加到您的python路径。
import sys
sys.path.append("/libraries")
但我认为将库放在需要它的项目的文件夹中或者只是将它们安装到sys.path中已有的标准位置之间可能会更好。
答案 1 :(得分:3)
我不认为可以使用简单的import
语句来完成。我要做的是将库文件夹的相对路径追加到sys.path
,如下所示:
import sys
sys.path.append('../../')
from libraries import mylibrary
请注意,仅当您从projects/project
目录启动python解释器时,此方法才有效。
答案 2 :(得分:3)
相对进口存在令人遗憾的混淆源。当您第一次了解它们时,您认为它们允许您通常使用相对文件/目录路径来引用将要导入的单个文件。 (或者至少,我是这么认为的。)实际上,它们只允许您在包中使用相对路径。这意味着当需要从同一个包中导入其他模块时,包中的某些模块可以使用相对导入语法。
在您的示例中,myproject.py与mylibrary不在同一个包中,实际上不在任何包中,因此无法使用myproject.py中的相对导入。在这种情况下,相对进口不适用。
您可以采取一些措施来获得所需的效果。一种是将库放在系统site-packages目录的子目录中。另一种方法是将.PTH文件放在系统site-package目录中,这些.PTH文件包含存储库所在位置的路径。另一种方法是使用PYTHONPATH指向存储库的目录。