我有一个名为handshake.py的文件。哪里有函数send_data(参数)。我想将该函数导入另一个名为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说。没有发现测试,请检查配置设置,但我仍然可以以某种方式运行测试。它说由于导入错误导致测试失败。
ImportError: cannot import name send_data
两个所述文件都在同一目录中。此外,该函数在handshake.py
中的“TCPhandshake”类中定义答案 0 :(得分:1)
一个可能的原因:模块a.py和b.py之间存在引用周期:
在a.py
中:import b
在b.py
中:import a
解决方案是打破循环。您需要明确指出哪个模块应该做什么。并减少依赖性。
答案 1 :(得分:0)
确保两个文件位于同一目录中并尝试:
from handshake import send_data
如果这不起作用,请尝试重命名handshake.py文件。
答案 2 :(得分:0)
我有同样的问题,当我尝试使用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)
这需要在开头添加。 这对我有用。
答案 3 :(得分:0)
handshake.py
和siptest.py
都在同一个目录中吗?
如果没有你可以试试这个:
1)将__init__.py
空文件添加到包含handshake.py
的目录中。
2)然后将该目录的路径添加到LD_LIBRARY_PATH和PYTHONPATH
答案 4 :(得分:0)
我找到了一种方法,通过实现关键字as和对象变量(例如
)来导入同一目录中的文件import file as fileObj
但缺点是当你想要访问导入的文件变量时,你必须先取fileObj.fileObjVariable.
答案 5 :(得分:0)
尝试添加/更新环境变量 PYTHONPATH ,该变量应指向具有 handshake.py
的文件夹答案 6 :(得分:0)
只需确保所有文件都位于项目的根目录中,即可正常工作:
import handshake
handshake.send_data(argument)
答案 7 :(得分:0)
确保函数在路径中
import sys
sys.path.insert(0, '/directory/tothe/handshakefile/')
然后
import handshake