尽管有很多pip冻结和尝试,但我似乎无法在heroku上获得与我的开发环境相同的urllib版本。我的要求是最新的,代码在我的开发机器上运行良好,但我无法通过生产环境中的错误,必须归结为urllib的版本。
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 :(得分:2)
这与urllib3无关。您尝试导入的功能是标准库的一部分。
然而,它在Python 2和3中处于不同的位置,这是你的try / except应该处理的。但是你有错误的Python 2位置:它位于urllib
,而不是urlparse
。
但是,您应该尝试在两种环境中运行相同版本的Python。确保通过在runtime.txt文件中指定它来告诉Heroku使用Python 3。