Python 导入后,调用定义生成 NameError
After Python import, call to a definition is generating the NameError
我是 python 的新手,我正在尝试执行以下操作:
我有一个名为 app
的文件夹,这个文件夹有两个文件:main.py 和 init.py
main.py
def generate_report(x1, x2):
print "Generating report..."
print x1
print x2
if __name__ == "__main__":
print "Running: main.py..."
generate_reports(1, 2)
print "Done!"
else:
print "Imported: main.py..."
__init__.py
import main
现在在我的控制台中,如果我这样做:
import app
我得到:
Imported: main.py...
那么如果我尝试这样做:
generate_report(1, 2)
我收到以下错误:
NameError: name 'generate_report' is not defined
Python 中有两种不同的模块命名空间方法。在一种情况下,您执行 import blah
,然后使用 blah.spam
访问 blah 的元素。在另一种情况下,您说 from blah import spam
(或 *
),然后直接按名称访问 blah 的元素。
问题是,你必须在每个级别上做出决定:如果你有一个包,你有两个这样的决定要做:你的脚本如何导入包(app
在你的情况下),以及你的应用程序的 __init__.py
如何导入 main
(顺便说一句,模块的名字很糟糕;P)。
所以,一种解决方案是编写
from app import main
在你的 __init__.py
和
from app import generate_report
在你的脚本里,还有一个是写
app.main.generate_report
在你的脚本中。当然还有另外两种方式,有的是直接导入,有的是from
ed.
我是 python 的新手,我正在尝试执行以下操作:
我有一个名为 app
的文件夹,这个文件夹有两个文件:main.py 和 init.py
main.py
def generate_report(x1, x2):
print "Generating report..."
print x1
print x2
if __name__ == "__main__":
print "Running: main.py..."
generate_reports(1, 2)
print "Done!"
else:
print "Imported: main.py..."
__init__.py
import main
现在在我的控制台中,如果我这样做:
import app
我得到:
Imported: main.py...
那么如果我尝试这样做:
generate_report(1, 2)
我收到以下错误:
NameError: name 'generate_report' is not defined
Python 中有两种不同的模块命名空间方法。在一种情况下,您执行 import blah
,然后使用 blah.spam
访问 blah 的元素。在另一种情况下,您说 from blah import spam
(或 *
),然后直接按名称访问 blah 的元素。
问题是,你必须在每个级别上做出决定:如果你有一个包,你有两个这样的决定要做:你的脚本如何导入包(app
在你的情况下),以及你的应用程序的 __init__.py
如何导入 main
(顺便说一句,模块的名字很糟糕;P)。
所以,一种解决方案是编写
from app import main
在你的 __init__.py
和
from app import generate_report
在你的脚本里,还有一个是写
app.main.generate_report
在你的脚本中。当然还有另外两种方式,有的是直接导入,有的是from
ed.