为什么我的python脚本无法将函数导入为:from functions import

时间:2019-12-14 20:38:49

标签: python

以下python脚本应打印所需的名称

脚本读取了包含functions.py函数的get_names

more names.py

import os
import sys
script_dir = os.path.dirname(os.path.abspath(__file__))
python_files_dir = os.path.join(script_dir, 'python_files')
sys.path.append(python_files_dir)


from functions import *


#  name
Name = get_names()
print Name;

当我们运行names.py时,我们得到get_names is not defined,而实际上get_names函数是在functions.py中定义的

我们运行names.py

的示例
python names.py

Traceback (most recent call last):
  File "names.py", line 18, in <module>
    Name = get_names()
NameError: name 'get_names' is not defined

包含功能的python_files/functions.py脚本-get_names

more python_files/functions.py

def get_names(path='/tmp/folder_1'):

.
.
.

我必须说,这仅在一台Linux计算机上发生,而确切的脚本names.py在另一台计算机上运行

1 个答案:

答案 0 :(得分:0)

您正在处理它,就好像它在包装中一样,但事实并非如此。它找不到文件 functions.py ,因为它位于目录中。因此,可以通过添加一个__init__.py将该目录放入包中,这样便可以使其像包一样工作并只需使用

即可导入

from python_file.function import get_name

或者只是从python_file目录中删除functions.py并将其与names.py放在同一目录中,因此您应该能够正常导入

from function import get_name

与其执行不必要的sys和os系统路径操纵过程,该过程可能会出错。也要避免使用 from module import * 因为通常这种做法通常被认为是不好的做法,所以您可能需要考虑将模块名称从 functions.py 更改为其他名称