无法在 heroku 上重新创建环境

Cannot recreate environment on heroku

尽管进行了多次 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

这与urllib3无关。您尝试导入的函数是标准库的一部分。

但是,它在 Python 2 和 3 中的不同位置,这是您的 try/except 应该处理的。但是 Python 2 的位置错误:它在 urllib,而不是 urlparse

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