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 bb.pyimport a

解决办法是打破循环。你需要明确哪个模块应该做什么。并减少依赖。

【讨论】:

【参考方案3】:

只要确保所有文件都位于项目的根目录下,这样就可以了:

import handshake
handshake.send_data(argument)

【讨论】:

【参考方案4】:

尝试添加/更新环境变量 PYTHONPATH,它应该指向包含 handshake.py

的文件夹

【讨论】:

【参考方案5】:

例如,我通过实现关键字 as 和对象变量找到了一种在同一目录中导入文件的方法

import file as fileObj

但缺点是当你想访问导入的文件变量时,你必须先获取fileObj.fileObjVariable.

【讨论】:

【参考方案6】:

handshake.pysiptest.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 文件导入函数的主要内容,如果未能解决你的问题,请参考以下文章

python从mysql导出数据导excel

尽管链接到带有导​​出符号的 .lib 文件,但从托管 C++ 链接到非托管 C++ 时出现链接错误

7.1 Python 文件的使用

Python学习思维导图

Python 基础思维导图整理

Python学习思维导图