0

我正在执行 sphinx-build 将一些 rst 文件转换为 html。但是我收到一个错误,因为它试图从旧的 Python 安装中导入模块的脚本。

我的环境:

执行的命令是:

sphinx-build -b html -d _build/doctrees   . _build/html

错误文本如下

Traceback (most recent call last):
  File "/usr/local/bin/sphinx-build", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 2556, in <module>
    """
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 620, in require
    ``resolve()`` method. The `fallback` flag indicates whether we should
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 518, in resolve
    yield self.by_key[key]
pkg_resources.DistributionNotFound: Jinja2>=2.3
make: *** [html] Error 1

我很确定我已经安装了 Jinja 2.6。问题是它是为 Python 2.7 安装的,并且 sphinx-build.py 脚本不知何故使用了 Python 2.6 模块目录(您可以在错误文本中看到 Python 2.6 目录的路径)。

我的疑问是:为什么脚本在该目录中搜索?一些事实

  • 我没有定义 PYTHONPATH 变量,如果我只是加载 python 解释器并打印 sys.path,我会得到所有属于 Python 2.7 的目录。没有提到 Python 2.6 目录。
  • 我的工作目录中没有包含 Python 2.6 目录的 .pth 文件

那么,我错过了什么?为什么 Python 2.7 在 Python 2.6 的目录中查找?

更新:看起来 sphinx-build 是使用 Python2.6 构建的。我删除了它,但现在我无法恢复它。我已经安装了 Sphinx 和 docutils,但没有安装 sphinx-build :-(。有什么线索吗?

提前谢谢了

4

1 回答 1

0

好吧,这是一个愚蠢的错误。sphinx-build 二进制文件是使用 Python 2.6 构建的。我删除了它,并用 Python 2.7 重建了 sphinx。

之后,二进制文件被放入 /Library/Frameworks/Python.framework/Versions/2.7/bin/。我刚刚在 /usr/local/bin 中创建了一个指向 /Library/Frameworks/Python.framework/Versions/2.7/bin/sphinx-build 的符号链接(出于任何原因,它没有被创建)。现在它起作用了。

于 2013-09-13T15:28:31.163 回答