Python脚本从旧的Python安装加载模块

时间:2013-09-13 14:44:05

标签: python-2.7 osx-snow-leopard

我正在执行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 :-(任何线索?

非常感谢提前

1 个答案:

答案 0 :(得分: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的符号链接(由于任何原因,它没有创建)。现在它有效。