Python Submodule没有导入

时间:2018-03-16 23:28:46

标签: python eclipse python-import pydev

这是我在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导入其余的模块。

2 个答案:

答案 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},这似乎是解决这个问题。虽然我不明白这是如何解决问题的,但结果对我来说已经足够了。