Как я уже говорил, lxkeymap - это системное приложение, которое устанавливается через apt
и НЕ доступно через pip
. Как описано в Зависимости Python через Pip , Heroku использует pip
для установки зависимостей вашего приложения.
Я предполагаю, что когда вы сгенерировали файл needs.txt , , вы также включили системные пакеты , возможно, используя sudo pip freeze
или не используя виртуальную среду Python или вручную написав файл требований.
$ sudo apt-get install lxkeymap
$ sudo pip freeze | grep lxkeymap
lxkeymap==0.1
Heroku, как ожидается, потерпит неудачу, потому что pip install lxkeymap
потерпит неудачу.
Решением здесь является использование виртуальной среды для управления зависимостями вашего приложения. Я сомневаюсь, что вам понадобится lxkeymap
для вашего приложения Flask, поэтому его не нужно включать в файл needs.txt (Flask, конечно, не нужен). Вы должны помещать только те пакеты, которые необходимо приложению напрямую .
- Создание и активация виртуальной среды для вашего приложения
Устанавливайте пакеты один за другим по мере необходимости ( НЕ ИСПОЛЬЗУЙТЕ sudo
):
(myflaskenv) myflaskapp$ pip3 freeze ## This should be initially empty.
(myflaskenv) myflaskapp$
(myflaskenv) myflaskapp$ pip3 install Flask
(myflaskenv) myflaskapp$ pip3 freeze
Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.2
- Создайте needs.txt из своей виртуальной среды (опять же, НЕ ИСПОЛЬЗУЙТЕ
sudo
)
(myflaskenv) myflaskapp$ pip3 freeze > requirements.txt
- При загрузке в Heroku используйте файл needs.txt из виртуальной среды.
Подробнее см. Управление пакетами с помощью pip .