提问人:Даниил Галахов 提问时间:10/30/2023 更新时间:10/30/2023 访问量:30
如何在 Python 包中正确设置内部导入?
How properly set up internal imports in Python package?
问:
我正在开发一个 Python 3 包(比如“Project1”),我想在另一个 Python 项目(比如“Project2”)中使用它。Project1 的结构简要如下:
/global_project_folder
|-different_garbage...
|-setup.py
|-/src
|-/project1
|-__init.py__
|-mainmodule.py
|-auxmodule1.py
|-auxmodule2.py
|-etc...
setup.py 包含有关项目的信息,如本手册中所述。在此文件中,项目称为“project1”
mainmodule.py 包含如下代码:
import auxmodule1
from auxmodule2 import AuxMethod21,AuxMethod22
def MainMethod():
return auxmodule1.AuxMethod11()*(AuxMethod21()+AuxMethod22())
我通过命令安装了 Project1 包进行开发:pipdeptree -l 在可用包列表中报告 project1。python3 -m pip install -e .
现在,在 Project2 中,我想编写如下代码:
from project1.mainmodule import MainMethod
但是当我尝试测试 Project2 时,它崩溃并出现错误“ModuleNotFoundError:没有名为'auxmodule1'的模块"
如果我像这样更改 Project1 mainmodule.py:
import project1.auxmodule1
from project1.auxmodule2 import AuxMethod21,AuxMethod22
一切开始工作。
但是我不想像这样修改 Project1,因为在这种情况下,它的代码无法在它之外工作,并且此选项是可行的。
我该如何解决这种情况?
我想以某种方式保持 Project1 的结构和代码不变 - 添加到项目的每个内部导入中,提到我们正在从这个项目本身导入模块看起来非常不优雅。有没有办法四处走动?
答: 暂无答案
评论
auxmodule1
project1.auxmodule1
auxmodule1
auxmodule2
auxmodule1
project1
project1
auxmodule1
project1
setup.py
setup.py
pyproject.toml