【问题标题】:How can I install packages on my heroku app?如何在我的 heroku 应用程序上安装软件包?
【发布时间】:2013-03-11 00:04:45
【问题描述】:

我有一个使用 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 上没有此安装是导致问题的原因。

我尝试用 production.ini 代码替换 development.ini 代码,但它仍然无法正常工作,所以我假设它是其他的(可能是 runapp.py 上的 import os 行?)

【问题讨论】:

  • 你的意思是你本地也有问题吗?

标签: python heroku virtualenv pyramid uuid


【解决方案1】:

我通常会创建一个包含软件包的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

【讨论】:

  • 是的。 Heroku 会安装这些包。
  • 我使用--find-links 标志安装了特定版本的torch。整个命令是pip install torch==1.3.1+cpu -f <URL>。我做了pip freeze > requirements.txt 但是构建失败因为它无法安装torch==1.3.1+cpu 怎么办?
【解决方案2】:

在您的 git 存储库的根目录中放置一个 requirements.txt,其中包含您所需的依赖项(以 pip/easy-install 格式指定)。

示例取自Heroku website:

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

【讨论】:

    猜你喜欢
    • 2012-11-14
    • 2017-12-30
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多