如何在我的Heroku应用上安装包?

0 投票
2 回答
1133 浏览
提问于 2025-04-17 18:37

我有一个应用程序,它使用了一个叫做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

撰写回答