我有以下文件夹结构。
application/app/folder/file.py
我想从另一个驻留的 Python 文件中的file.py中导入一些函数
application/app2/some_folder/some_file.py
我试过了
from application.app.folder.file import func_name
和其他一些尝试,但到目前为止我无法正确导入。我怎样才能做到这一点?
默认情况下,你不能。导入文件时,Python 只搜索当前目录,运行入口点脚本的目录,以及包含诸如软件包安装目录等位置的sys.path
(实际上它比这更复杂,但这包括大多数情况下)。
但是,您可以在运行时添加到 Python 路径:
# some_file.py
import sys
sys.path.insert(0, '/path/to/application/app/folder')
import file
没有错:
from application.app.folder.file import func_name
只需确保folder
还包含__init__.py
,这样就可以将其作为包包含在内。不知道为什么其他答案谈论PYTHONPATH
。
当模块处于并行位置时,如问题所示:
application/app2/some_folder/some_file.py
application/app2/another_folder/another_file.py
这个简写使一个模块对另一个模块可见:
import sys
sys.path.append('../')