【问题标题】:Heroku not recognizing NumPy in requirements.txtHeroku 无法识别 requirements.txt 中的 NumPy
【发布时间】:2016-02-08 21:31:39
【问题描述】:

我在尝试使用 Heroku 上的 Flask 运行 python-recsys 时遇到了困难

python-recsys 的一个要求是它需要 numpy

我的 requirements.txt 是

decorator==4.0.4
numpy==1.6.2
Flask==0.10.1
itsdangerous==0.24
Jinja2==2.8
MarkupSafe==0.23
networkx==1.10
git+https://github.com/ocelma/python-recsys.git
scipy==0.16.1
Werkzeug==0.10.4
wheel==0.24.0
Divisi2==2.2.5

输出

Counting objects: 4434, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4353/4353), done.
Writing objects: 100% (4434/4434), 33.17 MiB | 470 KiB/s, done.
Total 4434 (delta 394), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Removing .DS_Store files
remote: -----> Python app detected
remote: -----> Installing runtime (python-2.7.10)
remote: -----> Installing dependencies with pip
remote:        Collecting git+https://github.com/ocelma/python-recsys.git          (from -r requirements.txt (line 8))
remote:          Cloning https://github.com/ocelma/python-recsys.git to    /tmp/pip-nCYxck-build
remote:        Collecting decorator==4.0.4 (from -r requirements.txt (line 1))
remote:          Downloading decorator-4.0.4-py2.py3-none-any.whl
remote:        Collecting numpy==1.6.2 (from -r requirements.txt (line 2))
remote:          Downloading numpy-1.6.2.tar.gz (2.6MB)
remote:        Collecting Flask==0.10.1 (from -r requirements.txt (line 3))
remote:          Downloading Flask-0.10.1.tar.gz (544kB)
remote:        Collecting itsdangerous==0.24 (from -r requirements.txt (line 4))
remote:          Downloading itsdangerous-0.24.tar.gz (46kB)
remote:        Collecting Jinja2==2.8 (from -r requirements.txt (line 5))
remote:          Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
remote:        Collecting MarkupSafe==0.23 (from -r requirements.txt (line 6))
remote:          Downloading MarkupSafe-0.23.tar.gz
remote:        Collecting networkx==1.10 (from -r requirements.txt (line 7))
remote:          Downloading networkx-1.10.tar.gz (1.2MB)
remote:        Collecting scipy==0.16.1 (from -r requirements.txt (line 9))
remote:          Downloading scipy-0.16.1.tar.gz (12.2MB)
remote:        Collecting Werkzeug==0.10.4 (from -r requirements.txt (line 10))
remote:          Downloading Werkzeug-0.10.4-py2.py3-none-any.whl (293kB)
remote:        Collecting wheel==0.24.0 (from -r requirements.txt (line 11))
remote:          Downloading wheel-0.24.0-py2.py3-none-any.whl (63kB)
remote:        Collecting Divisi2==2.2.5 (from -r requirements.txt (line 12))
remote:          Downloading Divisi2-2.2.5.tar.gz (10.9MB)
remote:            Complete output from command python setup.py egg_info:
remote:            This package requires NumPy.
remote:            
remote:            On a Debian / Ubuntu system, you can run:
remote:              sudo apt-get install python-numpy python-dev
remote:            
remote:            Otherwise it will probably suffice to:
remote:              sudo easy_install numpy
remote:            
remote:            
remote:            ----------------------------------------
remote: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-    build-U6idSN/Divisi2
remote: 
remote:  !     Push rejected, failed to compile Python app

从输出中可以看出 numpy 已安装(第 2 行) 但它输出为已卸载

我尝试了不同的变体,包括不同版本的 numpy 我尝试将 numpy 要求放在 requirements.txt 中的不同位置

关于是什么导致此错误的任何想法? 有没有更好的安装 numpy 的方法?

【问题讨论】:

  • 您可能需要安装 python 头文件,以便它可以构建 numpy.你试过apt-get install python-dev吗?
  • 你按照建议sudo apt-get install python-numpy python-dev了吗?
  • 我不确定在哪里实现 'sudo apt-get install python-numpy python-dev' - 如果我在 Mac 上运行,我可以使用 'sudo apt-get install python -numpy python-dev' 还是因为它在 Heroku 上运行而无关紧要
  • 将 'sudo apt-get install python-numpy python-dev' 放入 requirements.txt 吗?
  • 你需要先运行 'heroku shell bash' 来通过 ssh 进入你的 heroku 盒子。那你可以试试apt-get

标签: python numpy heroku flask requirements.txt


【解决方案1】:

我已经按照@MatO 的建议修复了它:

在本地运行python.exe -m pip install python-dev-tools

使用pip freeze > requirements.txt重新生成 requirements.txt

使用git add . 添加更改

提交git commit -m "v5"

推送到 Heroku git push heroku master

部署后我能够运行我的应用程序,尽管我收到了警告:

警告:您的 slug 大小 (397 MB) 超出了我们的软限制 (300 MB) 这可能会影响启动时间。

我的应用以前是 59 MB,现在比我在没有 virtualenv 的情况下部署它时更大。

【讨论】:

    猜你喜欢
    • 2018-07-02
    • 2021-01-26
    • 2021-12-14
    • 2018-06-15
    • 2019-03-16
    • 1970-01-01
    • 2020-08-21
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多