这是我在Eclipse中的Pydev项目的文件路径:
project
|
+----tests
| |
| +----subtests
| | |
| | +----__init__.py
| | |
| | +----test1.py
| |
| +----__init__.py
| |
| +----test2.py
|
+----mods
|
+----__init__.py
|
+----submods1
|
+----__init__.py
|
+----submods2
|
+----__init__.py
|
+----a.py
|
+----b.py
|
...
|
+----z.py
test1和test2完全相同,所有init文件中只有注释。测试是从mods目录获取模块和那些模块依赖项。当我运行test1时,找到了所有模块,但test2总是无法在submods2中找到相同的模块(我们称之为“z.py”)。但不知何故,它能够找到其余的模块。这并不是说它无法在z.py中导入某些东西,它根本找不到该文件。
TEST2:
>>> from mods.submod1.submod2 import z
exec exp in global_vars, local_vars
File "<console>", line 1, in <module>
ImportError: cannot import name z
>>> from mods.submod1 import submod2
>>> hasattr(submod2, 'z')
False
两次测试期间sys.path
的唯一区别是测试所在的目录,test1的project/tests/subtests
和test2的project/tests
。
我无法弄清楚为什么test2无法导入z.py但是test1可以和test2导入其余的模块。
答案 0 :(得分:1)
要帮助诊断问题,请执行以下操作:
来自mods.submod1 import submod2 打印(submod2)
我的猜测是,它不是您期望的模块。
您使用的是哪个Python版本?
答案 1 :(得分:0)
我想我找到了解决方法。在我的Run Configurations
for test2中,Working directory
标签中的Arguments
有一个自定义路径${workspace_loc:project/tests/}
,我将其切换到默认路径${project_loc:/selected project name}
,这似乎是解决这个问题。虽然我不明白这是如何解决问题的,但结果对我来说已经足够了。