Python:从导入的文件调用函数
如何从导入的文件调用函数?例如: 测试:Python:从导入的文件调用函数,python,python-2.7,Python,Python 2.7,如何从导入的文件调用函数?例如: 测试: import test2 def aFunction(): print "hi there" 测试2: import test aFunction() 这给了我一个名称错误,说我的函数没有定义。我也试过: from test import aFunction 以及: 我还尝试过在测试中不导入test2。我将从C++中来到Python,所以我担心我会对老式Python Primisher……明显地忽略一些明显的事情… > p>你正在创建一个循
import test2
def aFunction():
print "hi there"
测试2:
import test
aFunction()
这给了我一个名称错误,说我的函数没有定义。我也试过:
from test import aFunction
以及:
我还尝试过在测试中不导入test2。我将从C++中来到Python,所以我担心我会对老式Python Primisher……明显地忽略一些明显的事情… > p>你正在创建一个循环导入。code>test.pyimports
test2.py
它尝试导入test.py
不要这样做。当test2
导入test
时,该模块尚未完成所有代码的执行;功能尚未定义:
- 编译并执行
,并将空模块对象添加到test
sys.modules
- 运行行
import test2
- 编译并执行
,并将空模块对象添加到test2
sys.modules
- 行
运行导入测试
已作为模块存在于test
中,此对象将返回并绑定到名称sys.modules
test
- 下一行尝试运行
。test.affunction()
测试中不存在此类名称。提出了一个例外
- 编译并执行
- 定义
的行永远不会执行,因为引发了异常def affunction()
import test2
行,直接运行test2.py
,导入函数将正常工作:
import test
test.aFunction()
您的
测试导入函数应该可以工作,您看到了什么错误?请注意,Python中还包含了一个,您可以将其导入。我在更大的项目中遇到了相同的错误,我创建测试文件只是为了显示我的问题。我收到错误“导入错误:无法导入名称'aFunction'”。+1很好地解释了导入的解决方法。昨天和我聊天的人(有着浓厚的Java背景)对python中导入的实际工作方式感到非常惊讶。正如您将看到的,我提到过我是用两种方法来实现的。@BraydonKains肯定发生了其他事情,因为按原样,这是有效的。@BraydonKains:确保模块位于同一目录中。也许可以将test
重命名为其他名称。确保将a功能作为全局导入,或通过模块引用该功能from test import aFunction
将其绑定为全局文件。重命名该文件并使用“from afilename import aFunction”。然而,对于我需要这些信息的项目,我需要这些文件能够访问彼此的变量。“从文件名导入*”有效吗?
import test
test.aFunction()