Python 3安装wsgiref失败

14

我在安装wsgiref时遇到了问题:

$ python --version
Python 3.6.0 :: Anaconda 4.3.1 (x86_64)
$ pip --version
pip 9.0.1 from /anaconda/lib/python3.6/site-packages (python 3.6)

以下是我的 requirement.txt 文件内容。

numpy==1.8.1
scipy==0.14.0
pyzmq==14.3.1
pandas==0.14.0
Jinja2==2.7.3
MarkupSafe==0.23
backports.ssl-match-hostname==3.4.0.2
gnureadline==6.3.3
ipython==2.1.0
matplotlib==1.3.1
nose==1.3.3
openpyxl==1.8.6
patsy==0.2.1
pyparsing==2.0.2
python-dateutil==2.2
pytz==2014.4
scikit-learn==0.14.1
six==1.7.3
tornado==3.2.2
wsgiref==0.1.2
statsmodels==0.5.0

当我运行pip install -r requirement.txt时,出现了以下错误。
Collecting wsgiref==0.1.2 (from -r requirements.txt (line 20))
  Using cached wsgiref-0.1.2.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/xs/y0pbzxkn7gqcdtrz4cpxtwrw0000gn/T/pip-build-hkiqbu1j/wsgiref/setup.py", line 5, in <module>
        import ez_setup
      File "/private/var/folders/xs/y0pbzxkn7gqcdtrz4cpxtwrw0000gn/T/pip-build-hkiqbu1j/wsgiref/ez_setup/__init__.py", line 170
        print "Setuptools version",version,"or greater has been installed."
                                 ^
    SyntaxError: Missing parentheses in call to 'print'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/xs/y0pbzxkn7gqcdtrz4cpxtwrw0000gn/T/pip-build-hkiqbu1j/wsgiref/

我尝试运行pip install --upgrade setuptoolssudo easy_install -U setuptools, 但都无法工作。我该如何解决这个问题?

3个回答

31

wsgiref已经作为Python 3的标准库被包含了……所以如果你正在使用Python 3,只需导入wsgiref即可。


4
根据这行代码 SyntaxError: Missing parentheses in call to 'print',我认为需要使用Python 2.x来运行setup.py。在print中是否使用括号是Python 2和Python 3的不同语法。
以下是Github问题的解决方案:

有几种方法可以让您运行起来,按照工作量从小到大的顺序:

  1. 切换到python2.7以进行安装。

  2. 尝试使用pip install --upgrade wsgiref升级wsgiref,并查看最新版本是否适用于您的设置和will(如果不适用,则会注意到http / webhooks无法正常工作)。

  3. 如果您尝试第二步并且它有效,则可以在此处提交包含requirements.txt中升级版本的PR。(您可以使用pip freeze查找您拥有的版本)。

您可以在这里了解更多有关语法差异的信息。

2
移除依赖项,使用Python3的wsgiref [正确答案] (https://dev59.com/u1gQ5IYBdhLWcg3wRR1j#49874665) - Nrzonline

0
解决方案:使用版本 flask-restx 代替已过时的 Flask-restful

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接