如何在不重置PYTHONPATH的情况下从项目中的不同位置导入包和模块(因为这看起来像'hacky'解决方案)。
例如,如果我有以下目录结构:
proj
├── __init__.py
├── important_file.py
└── subdirectory/
├── __init__.py
└── script.py
如何从script.py中导入important_file.py?我可以在项目中以某种方式指定proj
是我的根目录,以便我可以使用import proj.important_file
导入重要文件吗?
答案 0 :(得分:0)
您可以使用
import sys
sys.path.append('/path/to/root/directory')
从您喜欢的任何目录导入。至少,这在过去对我有用。也许有更少的“hacky”解决方案:)
答案 1 :(得分:0)
您可以使用相对导入
# inside subdirectory/script.py
from .. import important_file
但最好的解决方案是将其添加到PYTHONPATH
并执行
import proj.important_file
答案 2 :(得分:0)
我倾向于选择“pythonic”解决方案,不一定是@Gijs所建议的,我会更多地称之为解决方案。
所以这是我没有做太多的事情,但是当我需要这样做时,我花了很多时间。看一下这个my repo。在其中,我有一个单元测试目录,我将core.py导入test_core.py。
项目文件夹的结构如下。
SNA (this is called first-repo on git, but SNA on my machine)
├── bin/
└── sna/
├── core.py
└── test/
└── test_core.py
在text_core.py
中,我从core.py导入我的函数。我通过使用以下行来完成此操作。
from SNA.sna.core import *
这是一般的格式。
from PROJECTNAME.DIR.FILE import * (or specific functions)
希望这有帮助!