首页 > 解决方案 > 为什么我的python脚本不能将函数导入为:from functions import

问题描述

以下 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在其他机器上工作。

标签: python

解决方案


您正在处理它,就好像它在一个包中一样,但事实并非如此。它找不到文件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更改为其他名称


推荐阅读