【问题标题】:pip install of psycopg2 says no section error 'build_ext'pip install psycopg2 说没有部分错误'build_ext'
【发布时间】:2012-12-23 17:07:26
【问题描述】:

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

当我在激活 virtualenv 的情况下运行 pip install psycopg2 时,我得到以下输出。这似乎是一个路径遍历问题。 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

【问题讨论】:

    标签: python virtualenv pip psycopg2


    【解决方案1】:

    我遇到了同样的问题,但我尝试了旧版本 psycopg2==2.3.3 并且没有问题。

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

    这是我在 virtualenv 中所做的:

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

    【讨论】:

      【解决方案2】:

      我有同样的问题,至少在我的情况下,原因似乎是我们的服务器上安装了一个奇怪的 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 下运行,则将文件名指定为字节字符串(在 Python 2 中也称为字符串)。但是,后向端口用于测试 read 的第一个参数是否是 unicode 的实例而不是basestring,以便将每个字母作为单独的文件处理。由于预期的覆盖机制,如果找不到文件,它会静默失败,我们最终得到一个空配置。

      解决方案当然是升级到当前版本的 Python 3 backport 或者使用 Python 2.7 版本(但是 Python 3 版本要酷很多)。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2013-04-01
          • 2012-07-17
          • 2017-05-25
          • 2019-12-08
          • 2013-03-21
          • 2018-09-23
          • 2020-12-11
          • 2013-12-08
          相关资源
          最近更新 更多