这是我的文件夹结构:.├── main.py├── formats│ ├── __init__.py│ └── writer.py└── misc ├── __init__.py └── util.py在 中main.py,我可以util.py使用以下方式导入:from misc.util import sth但是,我无法使用上述语句和此命令导入util.pyin :writer.pypython formats/writer.py现在最简单的解决方案是搞乱PYTHONPATH: 一个简单的export PYTHONPATH=.就可以了。但是,我不喜欢这样做,也不喜欢相对导入。我现在有什么选择?
1 回答

蛊毒传说
TA贡献1895条经验 获得超3个赞
导入机制基于 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.writer
python formats/writer.py
与更改 PYTHONPATH 并运行不同writer.py
,这会保留默认的 PYTHONPATH(当前目录)并告诉 Python 在该路径中查找名为的模块formats.writer
并将其作为主模块运行。
添加回答
举报
0/150
提交
取消