Python:无法从another.py文件导入函数

时间:2017-09-13 07:09:09

标签: python-2.7 visual-studio importerror scapy nameerror

我有一个名为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”类中定义

8 个答案:

答案 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.pysiptest.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