为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2023-04-18 15:44:05
这是我的文件夹结构:.├── 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并将其作为主模块运行。


查看完整回答
反对 回复 2023-04-18
  • 1 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信