在Python中从__init__.py导入一个函数

时间:2014-02-19 09:21:47

标签: python function import module python-2.x

我有一个类似下面的模块,我想在myfile.py中包含__init__.py的函数

/mymodule
   /__init__.py
   /myfile.py

init是

import mymodule.myfile

myInt = 5

def myFunction():
    print "hey"

和myfile文件

from mymodule import myFunction
from mymodule import myInt
...

因此myInt包含有效但不包含myFunction。你知道为什么吗?

由于

修改

错误讯息为ImportError: cannot import name myFunction

1 个答案:

答案 0 :(得分:0)

你有一个循环导入:

  • myIntmyFunction尚未在import mymodule.myfile运行时分配。
  • mymodule.myfile然后尝试从mymodule导入尚未分配的名称。

您可以选择将myIntmyFunction移至单独的共享模块:

mymodule/
    __init__.py
    myfile.py
    utilities.py

其中__init__.pymymodule.myfilemymodule.utilities导入,myfile.pymymodule.utilities导入。

或者您可以在myfile.py中导入只是模块,并推迟引用myIntmyFunction名称,直到稍后(例如,在函数调用中) :

import mymodule

def somefunction():
    mymodule.myFunction(mymodule.myInt)

当调用somefunction()时,所有导入都已完成,mymodule.myFunctionmymodule.myInt已分配给。{/ p>