如何在使用dlib的herkou上部署应用程序?

时间:2019-02-18 09:46:26

标签: django heroku boost cmake dlib

我一直在尝试将Django Web应用程序部署到Heroku,并且我将dlib作为依赖项。我尝试添加要为其安装dlib和opencv的构建包。 This是我尝试过的buildpack。但这不起作用,因为它已经变成stale。我不知道是否有其他方法可以在Heroku上安装dlib?

这是我的应用程序的requirements.txt文件:

dj-database-url==0.3.0
dj-static==0.0.6
gunicorn==19.7.1
Unipath==1.0
python-decouple==3
click==6.7
numpy==1.15.4
Pillow==5.2.0
face-recognition-models==0.3.0
cmake
Werkzeug==0.14.1
face-recognition==1.2.3
boost==0.1
boost-py
dlib==19.4.0
psycopg2==2.7.5
whitenoise==3.2
jsonschema==2.6.0

这是我推送到heroku master时遇到的错误:

Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 704 bytes | 0 bytes/s, done.
Total 6 (delta 3), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing requirements with pip
remote:        Collecting Django==2.1.1 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 1))
remote:          Downloading https://files.pythonhosted.org/packages/ca/7e/fc068d164b32552ae3a8f8d5d0280c083f2e8d553e71ecacc21927564561/Django-2.1.1-py3-none-any.whl (7.3MB)
remote:        Collecting dj-database-url==0.3.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 2))
remote:          Downloading https://files.pythonhosted.org/packages/ef/b6/9283fcf61ced22bf90e7b4a84ba5b53d126b2c9b0dc9b667347698097026/dj_database_url-0.3.0-py2.py3-none-any.whl
remote:        Collecting dj-static==0.0.6 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 3))
remote:          Downloading https://files.pythonhosted.org/packages/2b/8f/77a4b8ec50c821193bf9682c7896f12fd0418eb3711a7d66796ede59c23b/dj-static-0.0.6.tar.gz
remote:        Collecting gunicorn==19.7.1 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 4))
remote:          Downloading https://files.pythonhosted.org/packages/64/32/becbd4089a4c06f0f9f538a76e9fe0b19a08f010bcb47dcdbfbc640cdf7d/gunicorn-19.7.1-py2.py3-none-any.whl (111kB)
remote:        Collecting Unipath==1.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 5))
remote:          Downloading https://files.pythonhosted.org/packages/5e/8e/7efe289440c9d3b3f2784516fef1362428d1c00d35ca31c39d7bee1412e8/Unipath-1.0.tar.gz
remote:        Collecting python-decouple==3 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 6))
remote:          Downloading https://files.pythonhosted.org/packages/5f/fc/9f3ec3f7844f9045406562512dbb599e9576e0c2ce3192a5e4d459f66e99/python-decouple-3.0.tar.gz
remote:        Collecting click==6.7 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 7))
remote:          Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
remote:        Collecting numpy==1.15.4 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 8))
remote:          Downloading https://files.pythonhosted.org/packages/ff/7f/9d804d2348471c67a7d8b5f84f9bc59fd1cefa148986f2b74552f8573555/numpy-1.15.4-cp36-cp36m-manylinux1_x86_64.whl (13.9MB)
remote:        Collecting Pillow==5.2.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 9))
remote:          Downloading https://files.pythonhosted.org/packages/d1/24/f53ff6b61b3d728b90934bddb4f03f8ab584a7f49299bf3bde56e2952612/Pillow-5.2.0-cp36-cp36m-manylinux1_x86_64.whl (2.0MB)
remote:        Collecting face-recognition-models==0.3.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 10))
remote:          Downloading https://files.pythonhosted.org/packages/cf/3b/4fd8c534f6c0d1b80ce0973d01331525538045084c73c153ee6df20224cf/face_recognition_models-0.3.0.tar.gz (100.1MB)
remote:        Collecting cmake (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 11))
remote:          Downloading https://files.pythonhosted.org/packages/45/c4/e69313ade2a3e992e7178744b0e56bdd8f23e79e15066a68cf490504beed/cmake-3.13.3-cp36-cp36m-manylinux1_x86_64.whl (15.9MB)
remote:        Collecting Werkzeug==0.14.1 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 12))
remote:          Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
remote:        Collecting face-recognition==1.2.3 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 13))
remote:          Downloading https://files.pythonhosted.org/packages/3f/ed/ad9a28042f373d4633fc8b49109b623597d6f193d3bbbef7780a5ee8eef2/face_recognition-1.2.3-py2.py3-none-any.whl
remote:        Collecting boost==0.1 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 14))
remote:          Downloading https://files.pythonhosted.org/packages/cd/e9/fd77f318eba4976c9ed9df341c13daebe69cace8723dbd0f3d39a0dddb08/boost-0.1.tar.gz
remote:        Collecting boost-py (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 15))
remote:          Downloading https://files.pythonhosted.org/packages/f7/be/28a09dacd0770d281bd3798f148dc431503b726b7219cec1fdb6faca46e6/boost_py-0.0.2-py3-none-any.whl
remote:        Collecting dlib==19.4.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 16))
remote:          Downloading https://files.pythonhosted.org/packages/1d/76/0f91fde37a83a40cf27e6cabd900b975c2667c522a07ae38e31cda2fa486/dlib-19.4.0.tar.gz (4.0MB)
remote:        Collecting psycopg2==2.7.5 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 17))
remote:          Downloading https://files.pythonhosted.org/packages/5e/d0/9e2b3ed43001ebed45caf56d5bb9d44ed3ebd68e12b87845bfa7bcd46250/psycopg2-2.7.5-cp36-cp36m-manylinux1_x86_64.whl (2.7MB)
remote:        Collecting whitenoise==3.2 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 18))
remote:          Downloading https://files.pythonhosted.org/packages/ed/7b/2d8276a56b6ebb7c0b8652a31e535df67f0e4152037b33ce036e79146ac3/whitenoise-3.2-py2.py3-none-any.whl
remote:        Collecting jsonschema==2.6.0 (from -r /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/requirements.txt (line 19))
remote:          Downloading https://files.pythonhosted.org/packages/77/de/47e35a97b2b05c2fadbec67d44cfcdcd09b8086951b331d82de90d2912da/jsonschema-2.6.0-py2.py3-none-any.whl
remote:        Installing collected packages: Django, dj-database-url, dj-static, gunicorn, Unipath, python-decouple, click, numpy, Pillow, face-recognition-models, cmake, Werkzeug, dlib, face-recognition, boost, boost-py, psycopg2, whitenoise, jsonschema
remote:          Running setup.py install for dj-static: started
remote:            Running setup.py install for dj-static: finished with status 'done'
remote:          Running setup.py install for Unipath: started
remote:            Running setup.py install for Unipath: finished with status 'done'
remote:          Running setup.py install for python-decouple: started
remote:            Running setup.py install for python-decouple: finished with status 'done'
remote:          Running setup.py install for face-recognition-models: started
remote:            Running setup.py install for face-recognition-models: finished with status 'done'
remote:          Running setup.py install for dlib: started
remote:            Running setup.py install for dlib: finished with status 'error'
remote:            Complete output from command /app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-otsn5okf/dlib/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-diaey5c7-record/install-record.txt --single-version-externally-managed --compile:
remote:            running install
remote:            running build
remote:            Detected Python architecture: 64bit
remote:            Detected platform: linux
remote:            Configuring cmake ...
remote:            -- The C compiler identification is GNU 7.3.0
remote:            -- The CXX compiler identification is GNU 7.3.0
remote:            -- Check for working C compiler: /usr/bin/cc
remote:            -- Check for working C compiler: /usr/bin/cc -- works
remote:            -- Detecting C compiler ABI info
remote:            -- Detecting C compiler ABI info - done
remote:            -- Detecting C compile features
remote:            -- Detecting C compile features - done
remote:            -- Check for working CXX compiler: /usr/bin/c++
remote:            -- Check for working CXX compiler: /usr/bin/c++ -- works
remote:            -- Detecting CXX compiler ABI info
remote:            -- Detecting CXX compiler ABI info - done
remote:            -- Detecting CXX compile features
remote:            -- Detecting CXX compile features - done
remote:            CMake Warning at /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/.heroku/python/lib/python3.6/site-packages/cmake/data/share/cmake-3.13/Modules/FindBoost.cmake:1775 (message):
remote:              No header defined for python-py34; skipping header check
remote:            Call Stack (most recent call first):
remote:              /tmp/pip-build-otsn5okf/dlib/dlib/cmake_utils/add_python_module:61 (FIND_PACKAGE)
remote:              CMakeLists.txt:6 (include)
remote:            -- Could NOT find Boost
remote:            CMake Warning at /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/.heroku/python/lib/python3.6/site-packages/cmake/data/share/cmake-3.13/Modules/FindBoost.cmake:1775 (message):
remote:              No header defined for python-py35; skipping header check
remote:            Call Stack (most recent call first):
remote:              /tmp/pip-build-otsn5okf/dlib/dlib/cmake_utils/add_python_module:63 (FIND_PACKAGE)
remote:              CMakeLists.txt:6 (include)
remote:            -- Could NOT find Boost
remote:            -- Could NOT find Boost
remote:            -- Could NOT find Boost
remote:            -- Found PythonLibs: /tmp/build_6d2057dd8ed43f6db2772ce68b91cc1d/.heroku/python/lib/libpython3.6m.a (found suitable version "3.6.8", minimum required is "3.4")
remote:            --  *****************************************************************************************************
remote:            --  To compile Boost.Python yourself download boost from boost.org and then go into the boost root folder
remote:            --  and run these commands:
remote:            --     ./bootstrap.sh --with-libraries=python
remote:            --     ./b2
remote:            --     sudo ./b2 install
remote:            --  *****************************************************************************************************
remote:            CMake Error at /tmp/pip-build-otsn5okf/dlib/dlib/cmake_utils/add_python_module:116 (message):
remote:               Boost python library not found.
remote:            Call Stack (most recent call first):
remote:              CMakeLists.txt:6 (include)
remote:            -- Configuring incomplete, errors occurred!
remote:            See also "/tmp/pip-build-otsn5okf/dlib/tools/python/build/CMakeFiles/CMakeOutput.log".
remote:            error: cmake configuration failed!
remote:            
remote:            ----------------------------------------
remote:        Command "/app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-otsn5okf/dlib/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-diaey5c7-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-otsn5okf/dlib/
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to app.
remote: 
To https://git.heroku.com/app.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/app.git'

谢谢。

2 个答案:

答案 0 :(得分:0)

boost==0.1
cmake==0.7.1
boost-py
face_recognition_models
face_recognition
dlib>=19.3.0
numpy
Pillow
scipy>=0.17.0
aniso8601==1.2.0
asn1crypto==0.24.0
certifi==2018.4.16
cffi==1.11.5
chardet==3.0.4
click==6.7
cryptography==1.9
Flask==0.12.1
Flask-Ask==0.9.7
gunicorn==19.7.1
idna==2.6
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
pycparser==2.18
pyOpenSSL==17.0.0
python-dateutil==2.7.2
PyYAML==3.12
requests==2.18.4
six==1.11.0
Unidecode==1.0.22
urllib3==1.22
Werkzeug==0.14.1

您需要cmake来安装dlib。要在heroku中安装cmake,您需要buildpack cmake并设置该内部版本以安装dlib。

您可以将此构建包用于cmake heroku-buildpack-cmake

在您的CLI中执行此操作

  1. 登录到heroku
  2. 复制粘贴heroku create --buildpack https://github.com/VovchikMonkey/heroku-buildpack-cmake.git
  3. 最后设置buildpack heroku buildpacks:set https://github.com/Starkast/heroku-buildpack-cmake

  4. 然后部署 $ git add .
    $ git commit -am "make it better"
    $ git push heroku master

答案 1 :(得分:0)

您需要将buildpack设置为heroku buildpacks:set https://github.com/heroku/heroku-buildpack-python.git