如何正确导入图书馆'包

时间:2013-03-20 22:39:26

标签: python python-import

在我们公司,我们使用python进行各种项目。我希望我们的代码更加清晰和可读,并且已经改变了一些东西以跟随PEP8。我们有一些共同的模块在这些项目之间共享,我们在'library'包中由多个使用项目。这是基本的层次结构:

src_py\
    lib\
        sharedmodule1.py
        ...
    ProjectA\
        ...
    ProjectB\
        ...
    ProjectC\
        helper\
            helpermodule1.py
            ...
        converter\
            base.py
            ...
        runprojectc.py

我正在使用ProjectC,我想在base.py和runprojectc.py中导入sharedmodule1.py。做这个的最好方式是什么。相对进口?绝对导入?重新构建我们的项目结构?

现在我觉得导入lib包的最好(最pythonic)方法是使用相对导入,但从我的读数来看,它是非常气馁的(PEP328)。我经常在类似问题上发布的解决方案是使用绝对导入并修改sys.path以包含父目录(这就是我们现在正在做的事情)。我对此说的是......“必须有更好的方式”。

目前我们的进口看起来像这样(非常丑陋和令人困惑):

# runprojectc.py
curdir = os.path.dirname(__file__)
sys.path.insert(0, os.path.abspath(os.path.join(curdir, '..', 'lib')))
import sharedmodule1.py

或者我们可以做(清洁):

# runprojectc.py
sys.path.insert(0, '..')
from lib import sharedmodule1.py

或亲戚:

# runprojectc.py
from .lib import sharedmodule1.py

我想要一些干净而又“社区可接受的”。我很想听到一些想法!

0 个答案:

没有答案