【发布时间】:2013-11-27 19:07:32
【问题描述】:
我有一个包含python包的目录如下:
--docs/index.rst
--docs/...
--app/__init__.py
--app/foo.py
我正在使用带有 autodocs 的 sphinx 来记录应用程序(在 python 3.3 中)。
现在,在conf.py(在docs/ 内),我有
sys.path.insert(0, os.path.abspath('../app'))
我将cd 变成docs/,运行
make html
这给了我
系统错误:父模块''未加载,无法执行相对导入
对于所有具有
的模块from .foo import Bar
我使用干净的虚拟环境安装了 Sphinx
pip install Sphinx
在我为 python 3.3 创建(干净的)环境之后。
我错过了什么?
发生这种情况时,我正在将项目从 python 2.* 移动到 python 3.*。所有的项目都在工作,但是这个......
【问题讨论】:
-
app是一个顶级包本身,还是你的顶级包所在的目录? -
我不确定我是否理解您的问题@abarnert。
app里面没有目录,只有一组*.py,包括__init__.py。 sphinx 仅记录应用程序目录。 -
如果
app里面有__init__.py,那么它就是一个包。这就是你的问题。让我写一个答案来解释。 -
顺便说一句,你可能会混淆“包”这个词在 Python 中有两个相互冲突的含义:它是“一个你可以导入的东西,你可以在其中导入其他东西”,它也是“您放入
site-packages或分发的东西,例如 PyPI"。
标签: python python-3.x python-sphinx