Python:从包模块的主文件导入变量

时间:2017-12-09 03:27:13

标签: python

我尝试在flask restfull中使用复杂的结构,我的结构如下:

main.py
-models
-- __init__.py
--modelA.py
-resources
--__init__.py
--resourceA.py

我在main.py中有一个变量,我在models.modelA中需要这个变量,我还需要resources.resourceA中的models.modelA。此时一切正常。当我启动我的应用程序时,我收到以下错误:

Traceback (most recent call last):
  File "main.py", line 12, in <module>
    from resources.resourceA import functionA
  File "/var/www/project/resources/resourceA.py", line 11, in <module>
    from models.modelA import *
  File "/var/www/project/models/modelA.py", line 8, in <module>
    from main import mainvariable
  File "/var/www/project/main.py", line 12, in <module>
    from resources.resourceA import functionA
ImportError: cannot import name functionA

我希望你的帮助

1 个答案:

答案 0 :(得分:0)

这里你基本上有一个叫做循环导入。正如追溯所述,您的main模块正在从functionA导入resources.resourceAresourceA正在导入models.modelA,而main又会尝试导入resources.resourceA,这又需要models.modelA

除非解决了特定的顺序,否则python解释器无法理解如何解析模块。但是,您可以更轻松地解决此问题。

如果main不需要MU <- getSymbols("MU",src="google", auto.assign=FALSE) #Correct getSymbols("PCU334413334413A",src="FRED", from='2013-01-02', to = '2017-11-06') [1] "PCU334413334413A" SKH <- getSymbols('000660.ks',src='yahoo', auto.assign=FALSE) #Correct Error in curl::curl_download(cu, tmp, handle = h) : SSL connect error 的模块级别导入,您可以将导入转移到需要导入的函数/类范围。

有关circular imports的更多信息,请参阅此处。