我似乎间歇性地遇到了这个问题。
有时我有一个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文件夹。其他一些似乎以相同方式配置的项目没有这个问题,我已经尝试过通常的清理/重启。
知道这里发生了什么事吗?
谢谢!
答案 0 :(得分:1)
您是否尝试过相对导入(from .b import foo
,from . import b
)?我不明白为什么绝对导入(包括“myproject”)在你的情况下不起作用,但同时相对导入应该仍然有效。
答案 1 :(得分:1)
所以,经过修改后,事实证明PyDev不会让我用一个本身在Python路径上的包启动一个import语句。如果我从我的项目文件夹中删除源文件夹名称,导入工作正常,但当然我失去了一些PyDev的功能。
所以,我的新问题略有不同,所以我在这里发布了一个不同的问题:
https://stackoverflow.com/questions/18613944/how-should-i-structure-my-pydev-git-project