Python导入突然停止工作

时间:2017-10-05 08:55:27

标签: python python-3.x import

在我目前的项目中,我有以下结构:

- start.py (this script is run and imports from parentPackage and it's children) 
- parentPackage
   - subPackage1
     - __init__.py
     - foo.py
     - bar.py
     - ...
   - subPackage2
     - __init__.py
     - foo1.py
     - bar2
     - ...
   - __init__.py
   - someDataSource.py
   - someOtherThing.py
   - hereIsAnotherOne.py
   - andSomeMore.py

__init__.py文件中(下划线不在SO上显示)我添加了这样的导入:

示例(parentPackage)

from .someDataSource.py import SomeDataSource
from .someOtherThing.py import SomeOtherThing
from .hereIsAnotherOne.py import HereIsAnotherOne
from .andSomeMore.py import AndSomeMore

我也为子包重复了这个过程。

然后,当我想从.hereIsAnotherOne.py导入SomeDataSource时,我只写:

from parentPackage import SomeDataSource

这完美地工作了几个星期,但现在突然停止了工作。

我已尝试从子包中删除__init__.py个文件,并在parentPackage的__init__.py中进行导入,但这并不起作用。

这怎么可能?我没有触及__init__.py文件或其他任何内容,我只在parentPackage中添加了一个新文件。

我在这里做错了吗?这总对我有用。我意识到在SO上有很多这个问题的答案,但似乎都没有解决我的问题。

note :我使用PyCharm作为我的IDE,奇怪的是PyCharm认为导入是有效的,没有任何警告,直到运行时。

谢谢大家!

PS:我正在运行python3.6

1 个答案:

答案 0 :(得分:0)

你有一个循环导入:

parentPackage,您可以从hereIsAnotherOne 导入 在hereIsAnotherOne中,您从parentPackage导入。您必须直接从其源模块SomeDataSource导入someDataSource.py或在您使用它的函数内本地导入它来解决此问题。

无论哪种方式,循环导入的发生都应该让人们重新考虑重构当前的包架构。