Требование не выполнено в heroku

#python #django #heroku #ubuntu-18.04

#python #django #heroku #ubuntu-18.04

Вопрос:

Я получаю сообщение об ошибке при развертывании проекта Django на heroku.

 ERROR: Could not find a version that satisfies the requirement apturl==0.5.2 (from -r /tmp/build_3724e729_/requirements.txt (line 1)) (from versions: none)
       ERROR: No matching distribution found for apturl==0.5.2 (from -r /tmp/build_3724e729_/requirements.txt (line 1))
  

Я попытался переустановить apturl, и я вижу ниже — распаковка aptutl 0.5.2, но все равно я получаю сообщение об ошибке в heroku.

  sudo apt-get install apturl apturl-common
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  efibootmgr libboost-program-options1.65.1 libegl1-mesa libfwup1
  libgoogle-perftools4 libllvm9 libpcrecpp0v5 libtcmalloc-minimal4
  libwayland-egl1-mesa libyaml-cpp0.5v5 linux-headers-5.4.0-45-generic
  linux-hwe-5.4-headers-5.4.0-42 linux-hwe-5.4-headers-5.4.0-45
  linux-image-5.4.0-45-generic linux-modules-5.4.0-45-generic
  linux-modules-extra-5.4.0-45-generic mongo-tools mongodb-server-core
Use 'sudo apt autoremove' to remove them.
Suggested packages:
  libgtk2-perl
The following NEW packages will be installed:
  apturl apturl-common
0 upgraded, 2 newly installed, 0 to remove and 52 not upgraded.
Need to get 19.4 kB of archives.
After this operation, 228 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apturl-common amd64 0.5.2ubuntu14.2 [10.9 kB]
Get:2 http://in.archive.ubuntu.com/ubuntu bionic-updates/main amd64 apturl amd64 0.5.2ubuntu14.2 [8,464 B]
Fetched 19.4 kB in 1s (31.2 kB/s) 
Selecting previously unselected package apturl-common.
(Reading database ... 229913 files and directories currently installed.)
Preparing to unpack .../apturl-common_0.5.2ubuntu14.2_amd64.deb ...
Unpacking apturl-common (0.5.2ubuntu14.2) ...
Selecting previously unselected package apturl.
Preparing to unpack .../apturl_0.5.2ubuntu14.2_amd64.deb ...
Unpacking apturl (0.5.2ubuntu14.2) ...
Setting up apturl-common (0.5.2ubuntu14.2) ...
Setting up apturl (0.5.2ubuntu14.2) ...
Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
  

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

1. apturl это системный пакет, а не пакет python. Он устанавливается через apt not python или pip . Вы использовали пакет сборки Python , в котором зависимости устанавливаются через requirements.txt (или Pipfile или setup.py ). Вам нужен пакет сборки Apt, через который устанавливаются зависимости Aptfile .

2. @TinNguyen. Пожалуйста, проверьте выше, я сделал только sudo apt-get, а не pip install.

3. Я в курсе. Однако при развертывании приложения ваша среда сборки сбрасывается. Вы не можете писать sudo apt-get install apturl apturl-common . При развертывании приложения ваше приложение не будет развертываться в первую очередь. Это правильный шаг, если вы работаете на компьютере с Ubuntu, который вы полностью контролируете. Машина, файловая система которой не стирается после каждой фиксации кода.

4. @TinNguyen. Не могли бы вы объяснить мне, что я должен делать? Я новичок в этом и мало что знаю об этом.

5. См. devcenter.heroku.com/articles/… Вам нужно github.com/heroku/heroku-buildpack-apt и github.com/heroku/heroku-buildpack-python . Для Python у вас, вероятно, был файл с именем requirements.txt . Для Apt вам нужен Aptfile . Как это работает, описано на их GitHub. Пакет сборки Apt должен запускаться перед Python multiple (см. Связанную статью), поэтому, когда Python проверяет apturl , что он уже установлен, и там ничего не нужно делать.