ModuleNotFoundError: нет модуля с именем «gi» - при развертывании в Heroku - PullRequest
0 голосов
/ 19 апреля 2019

Я развертываю небольшое приложение Flask в Heroku и сталкиваюсь с этой ошибкой - ModuleNotFoundError: Нет модуля с именем 'gi'

My Requirement.txt с использованием pip:

certifi==2019.3.9
chardet==3.0.4
Click==7.0
Flask==1.0.2
gunicorn==19.9.0
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
playsound==1.2.2
requests==2.21.0
ruamel.yaml==0.15.92
urllib3==1.24.2
vext==0.7.3
vext.gi==0.7.0
Werkzeug==0.15.2
pgi==0.0.10.1

My Actual code:

from flask import render_template
import requests
from playsound import playsound
from app import app

@app.route('/')
@app.route('/index',methods=['GET'])
def index():
    counter = 1
    user = {'username': 'Mr Test'}
    playsound('audio.mp3')
    return render_template('index.html', title='Home', user=user)

сообщение об ошибке:

2019-04-19T17:52:05.415693+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/playsound.py", line 91, in _playsoundNix
2019-04-19T17:52:05.415694+00:00 app[web.1]: import gi
2019-04-19T17:52:05.415695+00:00 app[web.1]: ModuleNotFoundError: No module named 'gi'

1 Ответ

2 голосов
/ 19 апреля 2019

Здесь есть как минимум три проблемы:

  1. Вы зависите от vext, библиотека для

    Используйте системные пакеты python в virtualenv.

    Весьма вероятно, что любые системные пакеты, которые вы пытаетесь использовать, недоступны в Heroku.Вы можете установить их как пакеты Ubuntu, используя несколько пакетов сборки , включая apt buildpack и Aptfile, но, вероятно, имеет смысл просто установить их в своем virtualenv.

    vext утверждает, что некоторые пакеты работают не так, но заставить их работать в virtualenv, вероятно, лучше спросить.

  2. vext.gi специально разработан для

    Разрешить использование системного gi.repository (Gtk3) из virtualenv

    GTK3 - графический инструментарийэто не имеет большого смысла запускать на веб-хостинге.Я не совсем уверен, что вы пытаетесь сделать с этим, но вам, вероятно, придется переосмыслить этот подход.

  3. Вы также используете playsound,

    Чистый Python, кроссплатформенный, одиночный функциональный модуль без зависимостей для воспроизведения звуков

    Это не имеет особого смысла и в Heroku.playsound может показаться работающим на вашем локальном компьютере, но это только потому, что ваш сервер работает на той же машине, что и ваш браузер.playsound, вероятно, вообще не будет работать на Heroku, но если он это сделает, он будет воспроизводить звук на каком-либо сервере в центре данных Amazon.Вы не сможете его услышать.

    Как и в случае с GTK3, вам придется пересмотреть эту часть своего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...