无法使用顶级模块(源文件夹)启动我的import语句

时间:2013-08-31 04:21:52

标签: python path pydev python-import

我似乎间歇性地遇到了这个问题。

有时我有一个PyDev项目,如果我尝试使用顶级文件夹的名称启动导入,则会出现编译错误。所以,假设我的项目看起来像这样:

+ myproject
    - __init__.py
    - a.py
    - b.py
    + package1
        - c.py
        - __init__.py
    + package2
        - d.py
        - e.py
        - __init__.py

如果我在文件a.py中,它将不允许我像这样进行导入,例如:

from myproject.b import foo
import myproject.b

任何文件都是如此。如果我从import语句中省略“myproject”,它们都编译得很好:

from b import foo
import b

就像图中一样,我肯定有一个顶级__init__.py,myproject文件夹及其父文件都在Python路径上。 myproject文件夹也是项目的源文件夹。

我需要完整的import语句,因为我正在部署此代码的地方将不会在其路径中包含myproject文件夹。其他一些似乎以相同方式配置的项目没有这个问题,我已经尝试过通常的清理/重启。

知道这里发生了什么事吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您是否尝试过相对导入(from .b import foofrom . import b)?我不明白为什么绝对导入(包括“myproject”)在你的情况下不起作用,但同时相对导入应该仍然有效。

答案 1 :(得分:1)

所以,经过修改后,事实证明PyDev不会让我用一个本身在Python路径上的包启动一个import语句。如果我从我的项目文件夹中删除源文件夹名称,导入工作正常,但当然我失去了一些PyDev的功能。

所以,我的新问题略有不同,所以我在这里发布了一个不同的问题:

https://stackoverflow.com/questions/18613944/how-should-i-structure-my-pydev-git-project