1

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

有时我有一个 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

任何文件都是如此。如果我像这样从导入语句中删除“myproject”,它们都编译得很好:

from b import foo
import b

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

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

知道这里发生了什么吗?

谢谢!

4

2 回答 2

1

因此,经过一番修改后,事实证明 PyDev 不允许我使用本身位于 Python 路径上的包开始导入语句。如果我从我的项目文件夹中删除源文件夹名称,导入工作正常,但当然我会失去一些 PyDev 的功能。

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

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

于 2013-09-04T12:37:48.360 回答
1

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

于 2013-08-31T04:39:03.547 回答