微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Sphinx创建文档时如何解决DLL错误?

如何解决使用Sphinx创建文档时如何解决DLL错误?

我正在尝试为我的包裹创建HTML文档,但是我一遍又一遍地遇到相同的错误

我正在使用Python 3.7和Sphinx 3.2.1的Windows计算机上。

我的包裹的结构如下:

[package]
 |
 |__ [package]
 |   |
 |   |__ module1.py
 |   |__ module2.py
 |   |__ __init__.py
 |
 |__ setup.py

我在第二个[package]文件夹中创建了一个docs文件夹,然后运行sphinx-quickstart,结果如下:

[package]
 |
 |__ [package]
 |   |
 |   |__ module1.py
 |   |__ module2.py
 |   |__ __init__.py
 |   |
 |   |__ [docs]
 |       |
 |       |__ [_build]
 |       | ...
 |       |__ conf.py
 |__ setup.py

我未评论并更改了conf.py

import os
import sys
sys.path.insert(0,os.path.abspath('..'))

然后我做了sphinx-apidoc -o . ..,当我运行make html时,得到以下输出

Running Sphinx v3.2.1
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 0 source files that are out of date
updating environment: 0 added,1 changed,0 removed
C:\Users\username\.conda\envs\cera\lib\importlib\_bootstrap.py:219: RuntimeWarning: numpy.ufunc size changed,may indicate binary incompatibility. Expected 192 from C header,got 216 from PyObject
  return f(*args,**kwds)

WARNING: autodoc: Failed to import module 'module1' from module 'package'; the following exception was raised:
DLL load Failed: The specified module Could not be found.
WARNING: autodoc: Failed to import module 'module2' from module 'package'; the following exception was raised:
DLL load Failed: The specified module Could not be found.
looking for Now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] modules
generating indices...  genindex py-modindexdone
writing additional pages...  searchdone
copying static files... ... done
copying extra files... done
dumping search index in English (code: en)... done
dumping object inventory... done
build succeeded,2 warnings.

The HTML pages are in _build\html.

已创建HTML文件,但除了模块列表以外,没有任何文档。为什么会出现DLL错误

如果您需要任何其他信息,请告诉我!

解决方法

PYTHONPATH / sys.path设置不正确可能是一个问题。这可能是由于os.path.abspath('..')语句是相对于当前工作目录(执行脚本的目录)而言的。

要获取模块的可移植路径或相对于模块的路径,请始终使用__file__

# package/docs/conf.py
# Use pathlib for a better path API.
# Available since Python 3.4
from pathlib import Path
import sys

THIS_DIR = Path(__file__).absolute().parent
PROJ_ROOT = THIS_DIR.parent
sys.path.insert(0,PROJ_ROOT)
,

该问题已通过将我的conda环境中的某些软件包升级到最新版本来解决。 我通过从上述错误中导入模块module1module2来发现错误 conf.py文件中并分析发生的错误消息。
似乎sphinx版本与较旧的numpy和sklearn版本不兼容,因为这些是我必须升级的软件包。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。