Python虚拟环境下pip安装MySQL-Python导致“RuntimeError: 超出最大递归深度”

7 投票
1 回答
3898 浏览
提问于 2025-04-17 23:47

我设置了一个虚拟环境,然后尝试通过 pip 安装 MySQL-Python(在激活环境后)。我的 requirements.txt 文件内容如下:

MySQL-python==1.2.5
argparse==1.2.1
pymongo==2.6.3
wsgiref==0.1.2

当我运行 pip install -r requirement.txt 时,最后一行输出是:

RuntimeError: maximum recursion depth exceeded

正如某个帖子提到的,我甚至运行了这个命令来升级我的 distribute:

easy_install distribute==0.6.28

结果还是不行。我的 Python 版本(在虚拟环境中)是 2.7.6,机器是 Ubuntu 14.04。


更新:错误追踪信息如下:

Downloading/unpacking MySQL-python==1.2.5 (from -r requirements.txt (line 1))
  Running setup.py (path:/root/frrole_backend_raw_dump/env/build/MySQL-python/setup.py) egg_info for package MySQL-python
    Traceback (most recent call last):
      File "<string>", line 17, in <module>
      File "/root/frrole_backend_raw_dump/env/build/MySQL-python/setup.py", line 21, in <module>
        setuptools.setup(**metadata)
      File "/usr/lib/python2.7/distutils/core.py", line 112, in setup
        _setup_distribution = dist = klass(attrs)
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 225, in __init__
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 257, in finalize_options
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2029, in require
        self.name = name
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 825, in best_match
        ``installer(requirement)``, unless `installer` is None, in which case
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 837, in obtain
        def __iadd__(self, other):
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 272, in fetch_build_egg
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 225, in __init__
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 257, in finalize_options
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2029, in require
        self.name = name
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 825, in best_match
        ``installer(requirement)``, unless `installer` is None, in which case
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 837, in obtain
        def __iadd__(self, other):
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 272, in fetch_build_egg
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 225, in __init__
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 257, in finalize_options
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2029, in require
        self.name = name
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 825, in best_match
        ``installer(requirement)``, unless `installer` is None, in which case
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 837, in obtain
        def __iadd__(self, other):
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 272, in fetch_build_egg
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 225, in __init__
      File "/usr/lib/python2.7/distutils/dist.py", line 287, in __init__
        self.finalize_options()
      File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 257, in finalize_options
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 2029, in require
        self.name = name
      File "build/bdist.linux-x86_64/egg/pkg_resources.py", line 580, in resolve
        dist = best[req.key] = env.best_match(req, ws, installer)

1 个回答

4

我也遇到这个问题!

这是我设置的一些说明:

  • 使用的是 Ubuntu 13.10
    • 通过 apt-get 安装了 Python-MySQLdb 和 libmysqlclient-dev

我还发现了这个,我怀疑这可能是根本原因:

x86_64-linux-gnu-gcc: error: unrecognized command line option ‘-Qunused-arguments’
x86_64-linux-gnu-gcc: error: unrecognized command line option ‘-Qunused-arguments’

编辑:

看起来我在没有设置 CFLAGS 或 CPPFLAGS 环境变量的情况下,仍然会遇到这个问题(MySQL-Python 1.2.4)。1.2.5 对我来说是可以的

撰写回答