我是Python包的新手,我很难找到一些有用的东西。我有三个包: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上看到的,这应该是可行的,不是吗?
我做错了什么?我应该做些什么(做一件简单的事情,比如)从另外两个包中使用一个普通的包?
发布于 2017-10-19 08:17:58
__init__.py很有用,尽管它是空的。它告诉python文件夹是python包。
我认为你需要的是修改系统路径。例如,假设您想将constants.py导入到index.py中,index.py如下所示:
import sys
sys.path.append("..")
from db import constantshttps://stackoverflow.com/questions/46823934
复制相似问题