2015-11-05 55 views
2

尽管有很多点子冻结和尝试,但我似乎无法在heroku上获得与我的开发环境相同版本的urllib。我的需求是最新的,并且代码在我的开发机器上运行良好,但我无法超越生产环境中的错误,该错误必须符合urllib的版本。无法在heroku上重新创建环境

from urlparse import quote_plus 
2015-11-05T08:24:38.133387+00:00 app[web.1]: ImportError: cannot import name quote_plus 

尽管我尝试以下导入:

try: 
    from urllib.parse import quote_plus 
except ImportError: 
    from urlparse import quote_plus 

和我的requirements.txt

blinker==1.4 
bson==0.4.1 
Flask==0.10.1 
Flask-Mail==0.9.1 
flask-mongoengine==0.7.1 
Flask-PyMongo==0.3.1 
Flask-Sendmail==0.1 
Flask-WTF==0.12 
gunicorn==19.3.0 
itsdangerous==0.24 
Jinja2==2.8 
MarkupSafe==0.23 
mongoengine==0.10.0 
pymongo==2.9 
pytz==2015.7 
requests==2.8.1 
six==1.10.0 
urllib3==1.12 
Wand==0.4.1 
Werkzeug==0.10.4 
WTForms==2.0.2 
+0

在heroku和开发环境中使用哪个版本的python?这可能是因为你在requirements.txt中设置的一些库不支持python 3 –

回答

2

这有什么好做urllib3。您尝试导入的功能是标准库的一部分。

但是,它在Python 2和3中处于不同的位置,这是您的尝试/除了应该处理的内容。但是您对Python 2的位置有误:它位于urllib,而不是urlparse

不过,您应该尝试在两种环境中运行相同版本的Python。确保你通过在runtime.txt文件中指定它来告诉Heroku使用Python 3。

+0

谢谢,使用runtime.txt选择python的实际版本很有帮助。少了头痛。 – disruptive