以下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
在另一台计算机上运行
答案 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 更改为其他名称