Heroku не может найти sdl-config?

#python #git #heroku

#python #git #heroku

Вопрос:

Я работаю над уроком «Журнал обучения» в главе 20 из «Ускоренного курса Python» Эрика Маттеса. Я пытаюсь отправить приложение в heroku, но у меня проблема с sdl-config. Он установлен, и я могу просмотреть его в своем каталоге / usr / bin:

 $ ls -lh /bin/sdl-config 
-rwxr-xr-x 1 root root 1.4K Sep 17  2019 /bin/sdl-config
$ ls -lh /usr/bin/sdl-config 
-rwxr-xr-x 1 root root 1.4K Sep 17  2019 /usr/bin/sdl-config
 

Похоже, Heroku не может его найти. Я установил pygame и кучу других библиотек, но безуспешно. Я гуглил в течение 2 часов, и я не ближе, чем когда я начал. кто-нибудь может помочь?

 $ git push heroku master
Enumerating objects: 80, done.
Counting objects: 100% (80/80), done.
Delta compression using up to 4 threads
Compressing objects: 100% (72/72), done.
Writing objects: 100% (80/80), 13.91 KiB | 1.99 MiB/s, done.
Total 80 (delta 23), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Installing python-3.8.6
remote: -----> Installing pip 20.1.1, setuptools 47.1.1 and wheel 0.34.2
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote:        Collecting asgiref==3.3.1
remote:          Downloading asgiref-3.3.1-py3-none-any.whl (19 kB)
remote:        Collecting bcrypt==3.1.7
remote:          Downloading bcrypt-3.1.7-cp34-abi3-manylinux1_x86_64.whl (56 kB)
remote:        Collecting beautifulsoup4==4.9.3
remote:          Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)
remote:        Collecting blinker==1.4
remote:          Downloading blinker-1.4.tar.gz (111 kB)
remote:        Collecting certifi==2019.11.28
remote:          Downloading certifi-2019.11.28-py2.py3-none-any.whl (156 kB)
remote:        Collecting chardet==3.0.4
remote:          Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
remote:        Collecting Click==7.0
remote:          Downloading Click-7.0-py2.py3-none-any.whl (81 kB)
remote:        Collecting colorama==0.4.3
remote:          Downloading colorama-0.4.3-py2.py3-none-any.whl (15 kB)
remote:        Collecting cryptography==2.8
remote:          Downloading cryptography-2.8-cp34-abi3-manylinux2010_x86_64.whl (2.3 MB)
remote:        Collecting cycler==0.10.0
remote:          Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
remote:        Collecting dbus-python==1.2.16
remote:          Downloading dbus-python-1.2.16.tar.gz (576 kB)
remote:        Collecting distro==1.4.0
remote:          Downloading distro-1.4.0-py2.py3-none-any.whl (17 kB)
remote:        Collecting dj-database-url==0.5.0
remote:          Downloading dj_database_url-0.5.0-py2.py3-none-any.whl (5.5 kB)
remote:        Collecting Django==3.1.3
remote:          Downloading Django-3.1.3-py3-none-any.whl (7.8 MB)
remote:        Collecting django-bootstrap4==2.3.1
remote:          Downloading django_bootstrap4-2.3.1-py3-none-any.whl (24 kB)
remote:        Collecting django-heroku==0.3.1
remote:          Downloading django_heroku-0.3.1-py2.py3-none-any.whl (6.2 kB)
remote:        Collecting entrypoints==0.3
remote:          Downloading entrypoints-0.3-py2.py3-none-any.whl (11 kB)
remote:        Collecting fasteners==0.14.1
remote:          Downloading fasteners-0.14.1-py2.py3-none-any.whl (20 kB)
remote:        Collecting future==0.18.2
remote:          Downloading future-0.18.2.tar.gz (829 kB)
remote:        Collecting gunicorn==20.0.4
remote:          Downloading gunicorn-20.0.4-py2.py3-none-any.whl (77 kB)
remote:        Collecting httplib2==0.14.0
remote:          Downloading httplib2-0.14.0-py3-none-any.whl (94 kB)
remote:        Collecting idna==2.8
remote:          Downloading idna-2.8-py2.py3-none-any.whl (58 kB)
remote:        Collecting keyring==18.0.1
remote:          Downloading keyring-18.0.1-py2.py3-none-any.whl (35 kB)
remote:        Collecting kiwisolver==1.3.1
remote:          Downloading kiwisolver-1.3.1-cp38-cp38-manylinux1_x86_64.whl (1.2 MB)
remote:        Collecting launchpadlib==1.10.13
remote:          Downloading launchpadlib-1.10.13.tar.gz (200 kB)
remote:        Collecting lazr.restfulclient==0.14.2
remote:          Downloading lazr.restfulclient-0.14.2.tar.gz (55 kB)
remote:        Collecting lazr.uri==1.0.3
remote:          Downloading lazr.uri-1.0.3.tar.gz (18 kB)
remote:        Collecting lockfile==0.12.2
remote:          Downloading lockfile-0.12.2-py2.py3-none-any.whl (13 kB)
remote:        Collecting macaroonbakery==1.3.1
remote:          Downloading macaroonbakery-1.3.1.tar.gz (79 kB)
remote:        Collecting Mako==1.1.0
remote:          Downloading Mako-1.1.0.tar.gz (463 kB)
remote:        Collecting MarkupSafe==1.1.0
remote:          Downloading MarkupSafe-1.1.0.tar.gz (18 kB)
remote:        Collecting matplotlib==3.3.3
remote:          Downloading matplotlib-3.3.3-cp38-cp38-manylinux1_x86_64.whl (11.6 MB)
remote:        Collecting monotonic==1.5
remote:          Downloading monotonic-1.5-py2.py3-none-any.whl (5.3 kB)
remote:        Collecting netifaces==0.10.4
remote:          Downloading netifaces-0.10.4.tar.gz (22 kB)
remote:        Collecting numpy==1.17.4
remote:          Downloading numpy-1.17.4-cp38-cp38-manylinux1_x86_64.whl (20.5 MB)
remote:        Collecting oauthlib==3.1.0
remote:          Downloading oauthlib-3.1.0-py2.py3-none-any.whl (147 kB)
remote:        Collecting olefile==0.46
remote:          Downloading olefile-0.46.zip (112 kB)
remote:        Collecting paramiko==2.6.0
remote:          Downloading paramiko-2.6.0-py2.py3-none-any.whl (199 kB)
remote:        Collecting pexpect==4.6.0
remote:          Downloading pexpect-4.6.0-py2.py3-none-any.whl (57 kB)
remote:        Collecting Pillow==7.0.0
remote:          Downloading Pillow-7.0.0-cp38-cp38-manylinux1_x86_64.whl (2.1 MB)
remote:        Collecting plotly==4.12.0
remote:          Downloading plotly-4.12.0-py2.py3-none-any.whl (13.1 MB)
remote:        Collecting protobuf==3.6.1
remote:          Downloading protobuf-3.6.1-py2.py3-none-any.whl (390 kB)
remote:        Collecting psycopg2==2.8.6
remote:          Downloading psycopg2-2.8.6.tar.gz (383 kB)
remote:        Collecting psycopg2-binary==2.8.6
remote:          Downloading psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl (3.0 MB)
remote:        Collecting pycairo==1.16.2
remote:          Downloading pycairo-1.16.2.tar.gz (180 kB)
remote:        Collecting pycups==1.9.73
remote:          Downloading pycups-1.9.73.tar.bz2 (52 kB)
remote:        Collecting pygame==1.9.6
remote:          Downloading pygame-1.9.6.tar.gz (3.2 MB)
remote:            ERROR: Command errored out with exit status 1:
remote:             command: /app/.heroku/python/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-2mx4fdak/pygame/setup.py'"'"'; __file__='"'"'/tmp/pip-install-2mx4fdak/pygame/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'rn'"'"', '"'"'n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-6ncce0z7
remote:                 cwd: /tmp/pip-install-2mx4fdak/pygame/
remote:            Complete output (12 lines):
remote:            
remote:            
remote:            WARNING, No "Setup" File Exists, Running "buildconfig/config.py"
remote:            Using UNIX configuration...
remote:            
remote:            
remote:            Hunting dependencies...
remote:            /bin/sh: 1: sdl-config: not found
remote:            /bin/sh: 1: sdl-config: not found
remote:            /bin/sh: 1: sdl-config: not found
remote:            WARNING: "sdl-config" failed!
remote:            Unable to run "sdl-config". Please make sure a development version of SDL is installed.
remote:            ----------------------------------------
remote:        ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built: 0c1e0a00b790fb57983cc348b4f1ef1e28875f6b
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 0c1e0a00b790fb57983cc348b4f1ef1e28875f6b
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote: 
remote: Verifying deploy...
remote: 
remote: !   Push rejected to hidden-woodland-77137.
remote: 
To https://git.heroku.com/hidden-woodland-77137.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/hidden-woodland-77137.git'
 

Отвечая Джафиру, я попытался создать requirements.txt снова в виртуальной среде, и снова получил список длиной 104 строки:

   1 alabaster==0.7.8
  2 appdirs==1.4.4
  3 apturl==0.5.2
  4 asgiref==3.3.1
  5 Babel==2.6.0
  6 bcrypt==3.1.7
  7 beautifulsoup4==4.9.3
  8 blinker==1.4
  9 Brlapi==0.7.0
 10 certifi==2019.11.28
 11 chardet==3.0.4
 12 Click==7.0
 13 colorama==0.4.3
 14 command-not-found==0.3
 15 cryptography==2.8
 16 cupshelpers==1.0
 17 cycler==0.10.0
 18 dbus-python==1.2.16
 19 defer==1.0.6
 20 distlib==0.3.1
 21 distro==1.4.0
 22 distro-info===0.23ubuntu1
 23 dj-database-url==0.5.0
 24 Django==3.1.3
 25 django-bootstrap4==2.3.1
 26 django-heroku==0.3.1
 27 docutils==0.16
 28 duplicity==0.8.12.0
 29 entrypoints==0.3
 30 fasteners==0.14.1
 31 filelock==3.0.12
 32 future==0.18.2
 33 gunicorn==20.0.4
 34 httplib2==0.14.0
 35 idna==2.8
 36 imagesize==1.2.0
 37 Jinja2==2.10.1
 38 keyring==18.0.1
 39 kiwisolver==1.3.1
 40 language-selector==0.1
 41 launchpadlib==1.10.13
 42 lazr.restfulclient==0.14.2
 43 lazr.uri==1.0.3
 44 lockfile==0.12.2
 45 louis==3.12.0
 46 macaroonbakery==1.3.1
 47 Mako==1.1.0
 48 MarkupSafe==1.1.0
 49 matplotlib==3.3.3
 50 meld==3.20.2
 51 monotonic==1.5
 52 netifaces==0.10.4
 53 numpy==1.17.4
 54 oauthlib==3.1.0
 55 olefile==0.46
 56 packaging==20.3
 57 paramiko==2.6.0
 58 pbr==5.5.1
 59 pexpect==4.6.0
 60 Pillow==7.0.0
 61 plotly==4.12.0
 62 protobuf==3.6.1
 63 psycopg2==2.8.6
 64 psycopg2-binary==2.8.6
 65 pycairo==1.16.2
 66 pycups==1.9.73
 67 pygame==1.9.6
 68 Pygments==2.3.1
 69 PyGObject==3.36.0
 70 PyJWT==1.7.1
 71 pymacaroons==0.13.0
 72 PyNaCl==1.3.0
 73 PyOpenGL==3.1.0
 74 pyparsing==2.4.7
 75 pyRFC3339==1.1
 76 python-apt==2.0.0 ubuntu0.20.4.1
 77 python-dateutil==2.7.3
 78 python-debian===0.1.36ubuntu1
 79 pytz==2019.3
 80 pyxdg==0.26
 81 PyYAML==5.3.1
 82 reportlab==3.5.34
 83 requests==2.22.0
 84 requests-unixsocket==0.2.0
 85 retrying==1.3.3
 86 roman==2.0.0
 87 SecretStorage==2.3.1
 88 simplejson==3.16.0
 89 six==1.14.0
 90 soupsieve==2.0.1
 91 Sphinx==1.8.5
 92 sqlparse==0.4.1
 93 systemd-python==234
 94 testresources==2.0.1
 95 ubuntu-advantage-tools==20.3
 96 ubuntu-drivers-common==0.0.0
 97 ufw==0.36
 98 unattended-upgrades==0.1
 99 urllib3==1.25.8
100 usb-creator==0.3.7
101 virtualenv==20.2.1
102 wadllib==1.3.3
103 whitenoise==5.2.0
104 xkit==0.0.0
(END)
 

Обычно ли Heroku требует такого количества вещей, даже для небольших приложений?

Комментарии:

1. У вас установлена версия для разработки sdl на удаленном компьютере? Редактировать: на самом деле, sdl доступен ли Heroku в виде пакета?

2. У меня установлена и обновлена версия для разработки.

Ответ №1:

Похоже, вы создали свой requirements.txt файл вне активной виртуальной среды. Если вы это сделаете, вы включите все пакеты Python, которые вы когда-либо устанавливали в свою систему. Я думаю, именно поэтому мы видим, что Heroku пытается установить pygame, matplotlib, numpy, pillow и другие. Взгляните на ваш requirements.txt файл, он должен включать только те пакеты, которые вы используете в проекте Django, который вы пытаетесь отправить в Heroku.

Если у вас есть ненужные пакеты, перечисленные в requirements.txt , вы можете воссоздать файл заново. Убедитесь, что вы находитесь в активной виртуальной среде, затем запустите pip freeze > requirements.txt снова. При этом файл будет перезаписан только теми пакетами, которые установлены в виртуальной среде. Открыть requirements.txt и убедитесь, что в нем перечислены только эти пакеты.

Если это выглядит лучше, зафиксируйте свои изменения с помощью Git и попробуйте снова запустить свой проект.

Комментарии:

1. Хм, я полагаю, что я создал requirements.txt файл внутри виртуальной среды. Я попробовал еще раз, и вот что я получил:

2. Черт. Я не могу добавить вывод, он слишком длинный для комментария.

3. Как вы создали свою виртуальную среду? Какие пакеты вы установили? Ваш requirements.txt файл должен выглядеть примерно так . У вас могут быть немного разные номера версий, но ваш список пакетов не должен существенно отличаться или быть значительно длиннее.

4. Я создал новый requirements.txt файл только с теми записями из предоставленной вами ссылки, внес изменения, и теперь сайт загружается быстрее. Я не могу сказать, почему предыдущая версия requirements.txt это было так давно. То, что вы мне показали, имело смысл, я просто собираюсь списать это на мою неопытность в python heroku.