大家好,最近在处理 Python 相关的项目的时候遇到了问题,希望可以请教一下大家. 我希望将同事写好的项目放入我的项目 a 中使用, 假设他的项目称之为 b,于是我直接将其放入我项目的根目录下, 简化后的项目结构如下:
.
├── __init__.py
├── b
│ ├── __init__.py
│ ├── config.py
│ └── process.py
└── main.py
其中 main.py 为
from b.process import process
if __name__ == '__main__':
process()
PDF_FILE = 'apc.pdf'
from config import PDF_FILE
def process():
print('Processing PDF file:', PDF_FILE)
if __name__ == '__main__':
process()
之后我从根目录(b 的父目录, main.py
所在的文件夹)运行了
python main.py
出现了 Error
Traceback (most recent call last): File "/Users/xxx/a/main.py", line 1, in <module> from b.process import process File "/Users/xxx/a/b/process.py", line 1, in <module> from config import PDF_FILE ModuleNotFoundError: No module named 'config'
之后我从我项目(项目 a)的父目录中运行
python -m a.main
依然会有一样的错误.
如何解决这种情况呢, 我知道将 b\process.py
中的 from config import PDF_FILE
改为 from .config import PDF_FILE
避免上面的错误. 但是实际中的 b 是一个非常复杂的项目, 有着很多导入和很多层级, 有没有办法不用一个个全部改成相对导入, 或者有什么自动化的工具可以完成这个动作呢? 抑或是还有更好的处理方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.