猿问

如何在另一个文件夹中导入 Python 模块,而无需相对导入和编辑 PYTHONPATH

这是我的文件夹结构:


.

├── main.py

├── formats

│   ├── __init__.py

│   └── writer.py

└── misc

    ├── __init__.py

    └── util.py

在 中main.py,我可以util.py使用以下方式导入:


from misc.util import sth

但是,我无法使用上述语句和此命令导入util.pyin :writer.py


python formats/writer.py

现在最简单的解决方案是搞乱PYTHONPATH: 一个简单的export PYTHONPATH=.就可以了。但是,我不喜欢这样做,也不喜欢相对导入。我现在有什么选择?


Smart猫小萌
浏览 92回答 1
1回答

蛊毒传说

导入机制基于 PYTHONPATH。当您运行 时python main.py,包含的目录main.py位于 PYTHONPATH 中,因此那里的所有其他包也是可导入的。运行时python formats/writer.py,该formats目录在 PATHONPATH 中,而其父目录不在,因此您无法导入不在formats.你可以做的是运行writer模块,但是在 PATHONPATH 中有根目录,你甚至可以在不弄乱环境变量的情况下做到这一点:cd /directory/in/which/main.py/is python -m formats.writerpython formats/writer.py与更改 PYTHONPATH 并运行不同writer.py,这会保留默认的 PYTHONPATH(当前目录)并告诉 Python 在该路径中查找名为的模块formats.writer并将其作为主模块运行。
随时随地看视频慕课网APP

相关分类

Python
我要回答