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

时间:2018-01-20 09:10:05

标签: python import python-import

有一个名为Importing files from different folder的流行Python问题。

但最重要的答案是提到向“some_file.py”添加内容,这显然只适用于该文件中的导入。

如果我想在项目范围内指定要导入的其他目录怎么办?

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

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

1 个答案:

答案 0 :(得分:1)

  

如果我想在项目范围内指定要导入的其他目录怎么办?

解决方案1:以开发模式安装的软件包

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

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

-e, - editable从本地项目以可编辑模式安装项目(即setuptools“develop mode”)                                 路径或VCS网址。

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

解决方案2:动态修改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

只要此Python进程正在运行,就不需要再次修改sys.path