协慌网

登录 贡献 社区

从不同的文件夹导入文件

我有以下文件夹结构。

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('../')