這是我的文件夾結(jié)構(gòu):.├── main.py├── formats│ ├── __init__.py│ └── writer.py└── misc ├── __init__.py └── util.py在 中main.py,我可以util.py使用以下方式導(dǎo)入:from misc.util import sth但是,我無法使用上述語句和此命令導(dǎo)入util.pyin :writer.pypython formats/writer.py現(xiàn)在最簡單的解決方案是搞亂PYTHONPATH: 一個簡單的export PYTHONPATH=.就可以了。但是,我不喜歡這樣做,也不喜歡相對導(dǎo)入。我現(xiàn)在有什么選擇?
1 回答

蠱毒傳說
TA貢獻1895條經(jīng)驗 獲得超3個贊
導(dǎo)入機制基于 PYTHONPATH。
當您運行 時python main.py
,包含的目錄main.py
位于 PYTHONPATH 中,因此那里的所有其他包也是可導(dǎo)入的。
運行時python formats/writer.py
,該formats
目錄在 PATHONPATH 中,而其父目錄不在,因此您無法導(dǎo)入不在formats
.
你可以做的是運行writer
模塊,但是在 PATHONPATH 中有根目錄,你甚至可以在不弄亂環(huán)境變量的情況下做到這一點:
cd /directory/in/which/main.py/is python -m formats.writer
python formats/writer.py
與更改 PYTHONPATH 并運行不同writer.py
,這會保留默認的 PYTHONPATH(當前目錄)并告訴 Python 在該路徑中查找名為的模塊formats.writer
并將其作為主模塊運行。
添加回答
舉報
0/150
提交
取消