我是Python软件包的新手,我正在努力让事情变得有效。
我有3个包:engine
,ui
和db
。我希望从其他两个包中使用db
。这样做的正确方法是什么?
我不想安装db
软件包,因为我目前正在同时开发3个软件包。
谢谢!
目前,我正试图通过导入兄弟套餐来实现这一目标,但它太糟糕了,我不确定这是否是正确的方法。 这个问题与Relative imports in Python 3或ValueError: attempted relative import beyond top-level package等大量问题密切相关,但没有一个问题对我有效: - (
这是我到目前为止所拥有的:
src/
__init__.py # empty file (is it useful?)
db/
__init__.py # empty file
constants.py
ui/
__init__.py # empty file
index.py
engine/
...some stuff...
这是index.py:
from .. import db
print(db.constants.stuff)
但是,cd ui && python3 index.py
或python3 -m index.py
的投放失败并显示SystemError: Parent module '' not loaded, cannot perform relative import
当我调整此项目时,我有时会遇到其他错误,例如ValueError: Attempted relative import in non-package
从我在https://docs.python.org/3/tutorial/modules.html上看到的,这应该有用,不应该吗?
我做错了什么?我该怎么做(做这么简单的事情)使用另外两个包中的公共包?
答案 0 :(得分:0)
__ init__.py非常有用,即使它是空的。它告诉python文件夹是python包。
我认为你需要的是修改系统路径。例如,假设您要将constants.py导入index.py,index.py将如下所示:
import sys
sys.path.append("..")
from db import constants