【发布时间】:2021-09-29 06:44:38
【问题描述】:
我的目录结构如下:
.
├── main.py
├── package
│ ├── module.py
│ └── utils.py
└── utils.py
在package 内部,我有(很多)代码,其中所有导入都与package 相关,例如package/module.py 包含 import utils,它希望导入 package/utils.py(而不是 utils.py)。
package 之外的所有代码都要求导入相对于根目录 .。
这对我来说是个问题,因为如果main.py 包含import package.module 而我有PYTHONPATH=.,那么package/module.py 最终会导入utils.py 而不是所需的package/utils.py(因为它包含import utils )。
如何在不重命名脚本的情况下解决此问题?我想以某种方式在package 中安装代码,这样我就可以在main.py 中导入它,而不会与我的其他文件发生冲突。
我尝试了什么:我在package 中添加了一个最小的setup.py 文件并运行pip install -e .,但这并没有解决问题。
非常感谢您的帮助!
【问题讨论】:
-
只是一个建议 - 更具描述性地命名你的包和模块 - 对不同的文件使用相同的文件名会让人困惑,因为 f**ck :)
-
谢谢!我同意描述性命名,但像
utils.py这样的文件往往位于包含该文件夹实用程序的各种文件夹中。尽管如此,package/中的代码是第三方代码,它的命名当然不在我的控制范围内......我希望有一个解决方案,您可以在 @ 中“打包”第三方代码987654344@ 无需重命名或编辑其中的代码以避免命名冲突...
标签: python python-import python-packaging pythonpath