蟒蛇相对进口(python relative import)

2019-09-17 17:18发布

我试图让Python中的相对进口。 但我不明白我在所以在这里寻找它的语法,每次,我不能得到答案:

这里是我的文件夹结构:

Root
    libraries
        mylibrary
        __init__
    projects
        project
            myproject.py

我想导入“在MyLibrary”使用相对路径,什么是做它的语法?

Answer 1:

你必须将该目录添加到你的Python路径。

import sys
sys.path.append("/libraries") 

但我认为这可能会更好要么把图书馆需要它,还是将它们安装到标准的地方之一,已经在sys.path中的项目的文件夹。



Answer 2:

我不认为它可以用一个简单的进行import语句。 我会做的是相对路径添加到库文件夹sys.path是这样的:

import sys
sys.path.append('../../')
from libraries import mylibrary

请注意,这只有当你开始从Python解释器projects/project目录。



Answer 3:

有混乱的一个不幸的源相对于进口。 当你第一次了解他们,你认为他们允许您使用一般相对文件/目录路径是指将要导入单个文件。 (或者至少,我是这么认为的。)其实,他们只允许你在一个包中使用相对路径。 这意味着,在一个包中某些模块可以使用相对导入语法时,他们需要从同一封装内导入其他模块。

在你的榜样,myproject.py是不是在同一个包在MyLibrary,而事实上是没有任何包装,所以没有办法用从内myproject.py相对进口。 相对进口只是没有在这种情况下适用。

有一对夫妇的事情你可以做的就是你想要的效果。 其中一个是把你的图书馆系统中的站点包目录的子目录。 另一种是把.PTH文件系统中的站点包目录,包含路径到您的库存储在地方的.PTH文件。 另一种是用PYTHONPATH以指向您存储库的目录。



文章来源: python relative import