首页 文章

pip安装psycopg2说没有部分错误'build_ext'

提问于
浏览
2

我正在尝试在Ubuntu 12.04机器上的virtualenv中安装psycopg2 . 安装了所有相关的软件包(python-dev,libpq-dev等...)

当我运行pip install psycopg2并激活virtualenv时,我得到以下输出 . 它似乎是一个路径遍历问题 . setup.cfg显然在最顶部有一个[build_ext]部分,所以我不认为setup.py正在找到正确的文件 . 有帮助吗?

Downloading/unpacking psycopg2
  Running setup.py egg_info for package psycopg2
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/home/vagrant/outland_env/build/psycopg2/setup.py", line 459, in <module>
        use_pydatetime  = int(parser.get('build_ext', 'use_pydatetime'))
      File "/home/vagrant/outland_env/local/lib/python2.7/site-packages/configparser.py", line 798, in get
        d = self._unify_values(section, vars)
      File "/home/vagrant/outland_env/local/lib/python2.7/site-packages/configparser.py", line 1154, in _unify_values
        raise NoSectionError(section)
    configparser.NoSectionError: No section: 'build_ext'
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/home/vagrant/outland_env/build/psycopg2/setup.py", line 459, in <module>

    use_pydatetime  = int(parser.get('build_ext', 'use_pydatetime'))

  File "/home/vagrant/outland_env/local/lib/python2.7/site-packages/configparser.py", line 798, in get

    d = self._unify_values(section, vars)

  File "/home/vagrant/outland_env/local/lib/python2.7/site-packages/configparser.py", line 1154, in _unify_values

    raise NoSectionError(section)

configparser.NoSectionError: No section: 'build_ext'

----------------------------------------
Command python setup.py egg_info failed with error code 1 in /home/vagrant/outland_env/build/psycopg2
Storing complete log in /tmp/tmpoeLbaP

3 回答

  • 4

    不确定这是否有帮助,但我只需要cd到setup.py所在的下载安装目录 .

  • 2

    我有同样的问题,但我尝试了旧版本 psycopg2==2.3.3 ,这没有问题 .

    我注意到我还必须删除 build/psycopg2 目录才能安装新版本 .

    这是我在virtualenv中所做的:

    rm -rf build/psycopg2
    bin/pip install psycopg2==2.3.3
    
  • 1

    我有同样的问题,至少在我的情况下,原因似乎是我们的服务器上安装了一个奇怪的configparser版本,即configparser Python 3 backport的错误版本 . (我更喜欢这个大大改进的Python 3版本;我很惊讶地发现它安装在我们的系统上 . )

    (已经解决的)错误is explained here .

    简而言之,当前psycopg2的 setup.py 加载文件 setup.cfg ,因此:

    parser = configparser.ConfigParser()
    parser.read('setup.cfg')
    

    read 方法可以采用文件名列表的单个文件名 . 在这种情况下,如果文件在Python 2下运行,则文件名被指定为bytestring(在Python 2中也称为字符串) . 然而,backport用于测试 read 的第一个参数是 unicode 的实例而不是 basestring ,以便它将每个字母作为单独的文件处理 . 由于预期的覆盖机制,如果找不到文件,它会无声地失败,我们最终得到一个空配置 .

    解决方案当然是升级到当前版本的Python 3 backport或使用Python 2.7版本(但Python 3版本更酷) .

相关问题