Python:无法从 another.py 文件导入函数
Posted
技术标签:
【中文标题】Python:无法从 another.py 文件导入函数【英文标题】:Python: Can't import a function from another.py file 【发布时间】:2018-02-21 18:45:32 【问题描述】:我有一个名为 handshake.py 的文件。哪里有一个函数 send_data(argument)。我想将该函数导入另一个名为 siptest.py 的文件中。我遇到了两个问题。我正在使用带有 Windows 7、64 位的 Microsoft Visual Studio。 1)我无法导入功能。我试过用,
from handshake import*
handshkae.send_data(argument)
这给了我一个错误。
NameError: global name 'handshake' is not defined
我尝试过的另一个选项是使用
import handshake
handshake.send_data(argument)
这给了我一个属性错误。
AttributeError: 'module' object has no attribute 'send_data'
如果我用其他方式,比如
from handshake import send_data
2) MS Visual Studio 说。没有发现测试,请检查配置设置,但我仍然可以以某种方式运行测试。它说由于 Import Error 导致测试失败。
ImportError: cannot import name send_data
这两个文件都在同一个目录中。另外,该函数在handshake.py 中的“TCPhandshake”类中定义
【问题讨论】:
【参考方案1】:确保函数在路径中
import sys
sys.path.insert(0, '/directory/tothe/handshakefile/')
然后
import handshake
【讨论】:
【参考方案2】:一个可能的原因:模块a.py和b.py之间存在引用循环:
在a.py
:import b
在b.py
:import a
解决办法是打破循环。你需要明确哪个模块应该做什么。并减少依赖。
【讨论】:
【参考方案3】:只要确保所有文件都位于项目的根目录下,这样就可以了:
import handshake
handshake.send_data(argument)
【讨论】:
【参考方案4】:尝试添加/更新环境变量 PYTHONPATH,它应该指向包含 handshake.py
的文件夹【讨论】:
【参考方案5】:例如,我通过实现关键字 as 和对象变量找到了一种在同一目录中导入文件的方法
import file as fileObj
但缺点是当你想访问导入的文件变量时,你必须先获取fileObj.fileObjVariable.
【讨论】:
【参考方案6】:handshake.py
和 siptest.py
是否在同一个目录中?
如果不行你可以试试这个:
1)将__init__.py
空文件添加到handshake.py
所在的目录下。
2)然后将该目录的路径添加到LD_LIBRARY_PATH和PYTHONPATH
【讨论】:
【参考方案7】:我遇到了同样的问题,当我尝试使用 python /home/name/workspace/test.py 从另一个目录运行程序时发生这种情况
解决我累了。
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
这需要在开头添加。 这对我有用。
【讨论】:
【参考方案8】:确保两个文件在同一个目录中并尝试:
from handshake import send_data
如果这不起作用,请尝试重命名 handshake.py 文件。
【讨论】:
我在最后一行编辑了一些信息。请看那个。可能会让我的问题更加清晰,是的,两个文件都在同一个目录中。我已经尝试通过更改名称。正如我的问题中提到的,这两个问题仍然存在。即 ImportError 和 MS Visual Studio 停止识别测试 没有注意到你的函数是在一个类中定义的。尝试先导入类,然后实例化类: from file import TheClass theclass= TheClass()以上是关于Python:无法从 another.py 文件导入函数的主要内容,如果未能解决你的问题,请参考以下文章