Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ModuleNotFoundError:没有名为';gi';-在Heroku部署时_Python_Heroku - Fatal编程技术网

Python ModuleNotFoundError:没有名为';gi';-在Heroku部署时

Python ModuleNotFoundError:没有名为';gi';-在Heroku部署时,python,heroku,Python,Heroku,我正在Heroku中部署一个小型Flask应用程序,并面临此错误-ModuleNotFoundError:没有名为“gi”的模块 使用pip的My Requirement.txt: 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 reque

我正在Heroku中部署一个小型Flask应用程序,并面临此错误-ModuleNotFoundError:没有名为“gi”的模块

使用pip的My Requirement.txt:

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
我的实际代码:

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'

这里至少有三个问题:

  • 你依靠的是一个图书馆

    在virtualenv中使用系统python包

    很可能您尝试使用的任何系统包在Heroku上都不可用。您可以使用和
    Aptfile
    将它们安装为Ubuntu软件包,但只需在VirtualNV中安装它们可能更有意义

    vext
    声称有些软件包不能以这种方式很好地工作,但是让它们在虚拟环境中工作可能是一件更好的事情

  • 专门设计用于

    允许从virtualenv使用system gi.repository(Gtk3)

    GTK3是一个图形化工具包,在web主机上运行没有多大意义。我不确定你到底想用它做什么,但你可能不得不重新考虑这种方法

  • 你也在使用,一个

    纯Python、跨平台、单功能模块,不依赖于播放声音

    这在Heroku身上也没有多大意义
    playsound
    似乎可以在本地计算机上运行,但这只是因为服务器与浏览器运行在同一台计算机上
    playsound
    可能在Heroku上根本不起作用,但如果它起作用,它将在亚马逊数据中心的某个服务器上播放声音。你听不到

    与GTK3一样,您必须重新考虑应用程序的这一部分


  • 这里至少有三个问题:

  • 你依靠的是一个图书馆

    在virtualenv中使用系统python包

    很可能您尝试使用的任何系统包在Heroku上都不可用。您可以使用和
    Aptfile
    将它们安装为Ubuntu软件包,但只需在VirtualNV中安装它们可能更有意义

    vext
    声称有些软件包不能以这种方式很好地工作,但是让它们在虚拟环境中工作可能是一件更好的事情

  • 专门设计用于

    允许从virtualenv使用system gi.repository(Gtk3)

    GTK3是一个图形化工具包,在web主机上运行没有多大意义。我不确定你到底想用它做什么,但你可能不得不重新考虑这种方法

  • 你也在使用,一个

    纯Python、跨平台、单功能模块,不依赖于播放声音

    这在Heroku身上也没有多大意义
    playsound
    似乎可以在本地计算机上运行,但这只是因为服务器与浏览器运行在同一台计算机上
    playsound
    可能在Heroku上根本不起作用,但如果它起作用,它将在亚马逊数据中心的某个服务器上播放声音。你听不到

    与GTK3一样,您必须重新考虑应用程序的这一部分


  • 您使用的是
    pip
    (带
    requirements.txt
    )还是Pipenv(带
    Pipfile
    Pipfile.lock
    )?请回答您的问题并添加您正在使用的依赖项文件。嘿,克里斯,是的,我正在使用pip with requirement.txt?你想让我在这里发布我的requirement.txt吗?是的,请把你的问题贴在那里。使用
    {}
    按钮或Ctrl+K将其格式化为代码。如果给您带来不便,请原谅我的无知。您使用的是
    pip
    (带
    requirements.txt
    )还是Pipenv(带
    Pipfile
    Pipfile.lock
    )?请回答您的问题并添加您正在使用的依赖项文件。嘿,克里斯,是的,我正在使用pip with requirement.txt?你想让我在这里发布我的requirement.txt吗?是的,请把你的问题贴在那里。使用
    {}
    按钮或Ctrl+K将其格式化为代码。如果给您带来任何不便,请原谅我的无知。非常感谢Chris为您提供的时间和投入。我使用的Vext,正如在多个地方建议的那样,用于修复“gi”未找到问题。我会移除的。对于playsound,我完全同意这没有意义,我的主要目的是在提交post/get请求时在浏览器中播放声音。你能提出一些想法吗?@ArjitSharma,你知道“
    gi
    notfound”问题的根本原因吗?您是在代码的其他地方使用这个模块,还是您的某个库依赖它?同样,如果是GTK3,我怀疑有一个更大的架构问题需要解决。在浏览器中播放声音必须使用JavaScript。请搜索教程并尝试您找到的内容。是的-这是由于playsound-他们使用gi/app/.heroku/python/lib/python3.6/site-packages/playsound.py“.”第91行“-----------------------------我知道,我必须在Flask中使用Javascript和Websocket-只是想避免,如果我能得到一个简单的解决方案。无论如何,非常感谢:-)非常感谢克里斯,感谢你的时间和投入。我使用的Vext,正如在多个地方建议的那样,用于修复“gi”未找到问题。我会移除的。对于playsound,我完全同意这没有意义,我的主要目的是在提交post/get请求时在浏览器中播放声音。你能提出一些想法吗?@ArjitSharma,你知道“
    gi
    notfound”问题的根本原因吗?您是在代码的其他地方使用这个模块,还是您的某个库依赖它?同样,如果是GTK3,我怀疑有一个更大的架构问题需要解决。在浏览器中播放声音必须使用JavaScript。请搜索教程并尝试您找到的内容。是的-它已到期