首页 > 解决方案 > heroku pip requirements.txt google-cloud-speech 失败

问题描述

我的 python/django 项目中有一个 requirements.txt。在我尝试将 google-cloud-speech 包含在我的需求中并部署到 heroku 之前,一切都在本地运行良好。从那以后它就失败了,我不知道为什么。(在此之前我已经多次部署到heroku)

我在这里关注这个例子:https ://cloud.google.com/speech-to-text/docs/libraries

在本地进行测试,所有内容都可以编译,并且端点可以在以下各项的导入下正常工作:

from google.cloud import speech_v1p1beta1
from google.cloud.speech_v1p1beta1 import enums

重现步骤:在我的 virtualenv 中

pip install -r requirements.txt
python manage.py runserver [works]
run endpoint for speech transcription [works]
git push heroku master [fails]

这是输出:

remote:      $ pip install -r requirements.txt
remote:        Collecting google-cloud-speech==1.3.2 (from -r requirements.txt (line 25))
remote:          Downloading https://files.pythonhosted.org/packages/5c/4b/76ec278f9ac5b6a525d222d7539cc473cca41f639a571177301a5115d0b3/google_cloud_speech-1.3.2-py2.py3-none-any.whl (88kB)
remote:        Collecting setuptools==49.2.0 (from -r requirements.txt (line 50))
remote:          Downloading https://files.pythonhosted.org/packages/8e/11/9e10f1cad4518cb307b484c255cae61e97f05b82f6d536932b1714e01b47/setuptools-49.2.0-py3-none-any.whl (789kB)
remote:        Collecting pip>=9.0.1 (from pipenv==2018.11.26->-r requirements.txt (line 36))
remote:          Downloading https://files.pythonhosted.org/packages/43/84/23ed6a1796480a6f1a2d38f2802901d078266bda38388954d01d3f2e821d/pip-20.1.1-py2.py3-none-any.whl (1.5MB)
remote:        Collecting grpcio<2.0dev,>=1.29.0 (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-speech==1.3.2->-r requirements.txt (line 25))
remote:          Downloading https://files.pythonhosted.org/packages/5e/29/1bd649737e427a6bb850174293b4f2b72ab80dd49462142db9b81e1e5c7b/grpcio-1.30.0.tar.gz (19.7MB)
remote:        Exception:
remote:        Traceback (most recent call last):
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2610, in _dep_map
remote:            return self.__dep_map
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2685, in __getattr__
remote:            raise AttributeError(attr)
remote:        AttributeError: _Distribution__dep_map
remote:        
remote:        During handling of the above exception, another exception occurred:
remote:        
remote:        Traceback (most recent call last):
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/basecommand.py", line 209, in main
remote:            status = self.run(options, args)
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/commands/install.py", line 299, in run
remote:            requirement_set.prepare_files(finder)
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/req/req_set.py", line 360, in prepare_files
remote:            ignore_dependencies=self.ignore_dependencies))
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/req/req_set.py", line 647, in _prepare_file
remote:            set(req_to_install.extras) - set(dist.extras)
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2810, in extras
remote:            return [dep for dep in self._dep_map if dep]
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2624, in _dep_map
remote:            dm.setdefault(extra,[]).extend(parse_requirements(reqs))
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2980, in parse_requirements
remote:            "version spec")
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/pip-8.1.1-py3.6.egg/pip/_vendor/pkg_resources/__init__.py", line 2956, in scan_list
remote:            raise RequirementParseError(msg, line, "at", line[p:])
remote:        pip._vendor.pkg_resources.RequirementParseError: Expected ',' or end-of-list in futures>=2.2.0; python_version<'3.2' at ; python_version<'3.2'
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 

这是我的要求.txt

apns2==0.7.1
asn1crypto==1.1.0
boto3==1.9.250
botocore==1.12.251
certifi==2019.9.11
cffi==1.13.0
celery==4.4.1
chardet==3.0.4
cryptography==2.9
Django==2.2.4
django-bootstrap4==0.0.8
django-cors-headers==3.2.0
django-extensions==2.2.9
django-filter==2.2.0
django-heroku==0.3.1
django-rest-framework-social-oauth2==1.1.0
django-storages==1.7.1
djangorestframework==3.10.3
dj-database-url==0.5.0
dj-stripe==2.3.0
docutils==0.15.2
gunicorn==20.0.4
gcloud==0.18.3
google-cloud-storage==1.29.0
google-cloud-speech==1.3.2
google-api-python-client==1.10.0
h2==2.6.2
hpack==3.0.0
hyper==0.7.0
hyperframe==3.2.0
idna==2.8
jmespath==0.9.4
nltk==3.5
pandas==1.0.3
Pillow==7.1.2
pipenv==2018.11.26
psycopg2-binary
pycparser==2.19
pydub==0.24.1
PyJWT==1.7.1
python-dateutil==2.8.0
pytest==5.4.1
pytest-django==3.8.0
pytz==2019.2
redis==3.4.1
requests==2.22.0
rest-social-auth==2.0.2
s3transfer==0.2.1
sendgrid==6.3.1
six==1.12.0
stripe==2.48.0
sqlparse==0.3.0
urllib3==1.24.3
virtualenv==16.7.6
virtualenv-clone==0.5.3

标签: pythonherokupipgoogle-cloud-speech

解决方案


我最终不得不降级我的 grpcio 和 google-core-api 版本来解决这个问题。大量的试验和错误,所以不幸的是我没有真正的根本原因来分享。


推荐阅读