我正在阅读Heroku教程“Python入门”。我正处于我想用virtualenv在本地构建我的环境的步骤,所以我可以在本地运行测试应用程序。 requirements.txt包含
wsgiref==0.1.2
并且在达到该步骤时,virutalenv输出以下错误消息
Downloading/unpacking wsgiref==0.1.2 (from -r requirements.txt (line 8))
Downloading wsgiref-0.1.2.zip
Running setup.py egg_info for package wsgiref
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/private/var/folders/v6/zf84tlbn19zcqlbx977nlrmh0000gn/T/pip_build_jeremy/wsgiref/setup.py", line 5, in <module>
import ez_setup
File "./ez_setup/__init__.py", line 170
print "Setuptools version",version,"or greater has been installed."
^
SyntaxError: invalid syntax
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "/private/var/folders/v6/zf84tlbn19zcqlbx977nlrmh0000gn/T/pip_build_jeremy/wsgiref/setup.py", line 5, in <module>
import ez_setup
File "./ez_setup/__init__.py", line 170
print "Setuptools version",version,"or greater has been installed."
^
SyntaxError: invalid syntax
我很清楚发生了什么:在某些时候,python3.3(我的默认值)被用来通过python2.x脚本安装。我只是不知道如何解决它。我的virtualenv只有Python3.x实用程序,我不确定ez_setup是什么,即使在阅读其令人担忧的PyPI entry之后。
我该如何解决这个问题?
答案 0 :(得分:7)
Heroku支持Python版本2.4.4 through 3.4.1。
您使用的教程是针对Python 2.7.8设计的,这就是您的应用程序无法在本地运行的原因。如果您要将应用程序推送到Heroku,它将正常工作。
这里有两个选项,您可以在本地计算机上安装Python 2.7,也可以修改教程以使用Python 3.x
对于第一个选项,使用包管理器或其他常规工具,安装Python 2.x.如果您使用的是redhat或其他基于rpm的发行版(如centos,fedora等),请注意不要覆盖系统Python,因为像yum
这样的rpm工具将停止工作。
安装Python 2.7.x后,您必须针对该版本的Python安装pip和setuptools。最后,创建您的虚拟环境,然后继续学习本教程。
如果您想坚持使用Python 3.3,那么您必须从您克隆的存储库中进行以下调整:
runtime.txt
中,将python-2.7.8
更改为python-3.3
将您的requirements.txt
更改为以下内容:
django-toolbelt
你不需要任何其他东西,django-toolbelt
只是一个元数据包,它将安装django,gunicorn,psycopg2,dj-database-url和dj-static。
创建新的虚拟环境,然后安装这些要求。