Python打包 - 顶级导入表现奇怪

时间:2014-12-30 19:34:48

标签: python import packaging

我目前遇到python包装问题和对它的引用。

我的结构如下:

code/
    package/
        A/
            __init__.py
            a.py
            aa.py
        B/
            __init__.py
            b.py
            bb.py
        C/
            __init__.py
            b.py
            bb.py
        __init__.py     #1
documentation/
    ...
other_stuff/
    ...

(所有__init__.py都是空的)

根据我读过的所有内容,我应该能够引用和导入这样的东西(在a.py中):

from package.B.bb import whatever

然而,这不起作用。当我将外部__init__.py复制到'代码'文件夹,我可以导入这样的东西,但是:

from code.package.B.bb import whatever

对于大多数实际用途来说,这显然是不理想的。

我可以做些什么来实现我的目标行为? (我假设它很简单,我只是缺少它)

(更多细节:我使用的是Python 2.7和PyCharm 4.03)

1 个答案:

答案 0 :(得分:1)

code上列出了sys.path父目录,但您需要拥有code目录*本身added to sys。 path`。

换句话说,您需要/full/path/for/code中的sys.path,而不仅仅是/full/path/for

请注意,Python会自动将当前工作目录或脚本的父目录添加到sys.path;请参阅Command Line Interface Options documentation中列出的各种选项。

例如,位于code内的Python脚本,当使用python path/for/code/script.py运行时,会将code目录添加到sys.path以进行该运行。