如何在我的Heroku应用上安装包?
我有一个应用程序,它使用了一个叫做shortuuid的库(你可以在这里找到:https://pypi.python.org/pypi/shortuuid/0.1),在我本地用runapp.py运行的时候一切都很好。
import os
from paste.deploy import loadapp
from waitress import serve
if __name__ == "__main__":
port = int(os.environ.get("PORT", 5000))
app = loadapp('config:production.ini', relative_to='.')
serve(app, host='0.0.0.0', port=port)
但是,当我尝试用../bin/pserve development.ini来运行它时,就出现了问题。我收到一个错误提示:导入错误:没有名为shortuuid的模块。当我把它推送到heroku时,也遇到了同样的错误。我已经在我的虚拟环境中安装了shortuuid,而我的应用程序就是在这个环境中运行的,所以我只能推测,heroku上没有这个库的安装就是导致问题的原因。
我尝试把development.ini的代码换成production.ini的代码,但还是不行,所以我猜可能是其他原因(也许是runapp.py中的import os那一行?)
2 个回答
1
在你的git仓库的根目录下放一个 requirements.txt
文件,里面写上你需要的依赖项(用pip或easy-install的格式)。
下面是一个来自 Heroku网站 的例子:
Flask==0.8
Jinja2==2.6
Werkzeug==0.8.3
certifi==0.0.8
chardet==1.0.1
distribute==0.6.24
gunicorn==0.14.2
requests==0.11.1
3
我通常会创建一个 requirements.txt
文件,这个文件里包含了需要的包:
Flask==0.9
Jinja2==2.6
Werkzeug==0.8.3
distribute==0.6.27
wsgiref==0.1.2
Flask-Cache==0.10.0
gunicorn==0.17.2
你可以用 pip
来创建这个文件:
$ pip freeze > requirements.txt