从不同文件夹导入文件,*项目范围*

Importing files from different folder, *project-wide*

有一个名为 Importing files from different folder 的热门 Python 问题。

但那里的最佳答案提到向 "some_file.py" 添加内容,这显然只适用于该文件中的导入。

如果我想在项目范围内指定一个额外的导入目录怎么办?

我不想修改 PYTHONPATH,因为我相信每个项目的解决方案更干净。

我不想为此使用 python 包,因为我觉得它们可能只会使事情复杂化。例如。也许我每次更改其他文件夹中的代码时都需要手动将 .py 文件重新编译为 .pyc 文件。

What if I want to specify an additional dir to import from, project-wide?

解决方案 1:在开发模式下安装包

Create a regular package with setup.py 并使用 -e 选项安装它:

python -m pip install -e /path/to/dir_with_setup_py/

-e, --editable Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.

现在,只要您更新代码,导入时就会使用新版本 无需重新安装任何东西。

方案二:动态修改sys.path

您可以根据需要将任意数量的目录动态添加到 Python 软件包的搜索路径中。将其作为您执行的第一行代码:

import sys

sys.path.append('my/path/to/my/file1')
sys.path.append('my/path/to/my/file2')

或使第一个被发现:

sys.path.insert(0, 'my/path/to/my/file1')
sys.path.insert(0, 'my/path/to/my/file2')

现在文件:

my/path/to/my/file1/myscript1.py
my/path/to/my/file2/myscript2.py

可以导入项目中的任何地方:

import myscript1
import myscript2

不需要再修改sys.path只要这个Python过程是运行.