简体   繁体   English

git push heroku master - 无法编译 Python 应用程序

[英]git push heroku master - failed to compile Python app

I'm a completely newbie to git, heroku, and python.我是 git、heroku 和 python 的新手。 I'm a network architect not a developer.我是网络架构师而不是开发人员。 However, I'm working on a project that requires I jump into the world of development.但是,我正在从事一个需要我进入开发世界的项目。

I'm following the instructions from this Plivo blog: https://plivo.com/docs/integrations/hipchat-api/我正在按照这个 Plivo 博客的说明进行操作: https ://plivo.com/docs/integrations/hipchat-api/

When I run "git push heroku master" it fails with the following (this is the end of the beginning and end of the output:当我运行“git push heroku master”时,它会失败并显示以下内容(这是输出开头和结尾的结尾:

# git push heroku master
Enter passphrase for key '/root/.ssh/id_rsa': 
Initializing repository, done.
Counting objects: 18, done.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 9.26 KiB, done.
Total 18 (delta 4), reused 0 (delta 0)

-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.6.
-----> Preparing Python runtime (python-2.7.6)
-----> Installing Setuptools (2.1)
-----> Installing Pip (1.5.4)
-----> Installing dependencies using Pip (1.5.4)
       Downloading/unpacking Flask==0.10.1 (from -r requirements.txt (line 1))
         Running setup.py (path:/tmp/pip_build_u51681/Flask/setup.py) egg_info for package Flask

           warning: no files found matching '*' under directory 'tests'
           no previously-included directories found matching 'docs/_build'
           no previously-included directories found matching 'docs/_themes/.git'
       Downloading/unpacking Jinja2==2.7.1 (from -r requirements.txt (line 2))
         Running setup.py (path:/tmp/pip_build_u51681/Jinja2/setup.py) egg_info for package Jinja2

. . . . . .

 Renaming /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg into /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg.OLD.1397173205.08

       Patched done.

       Relaunching...

       Traceback (most recent call last):

         File "<string>", line 1, in <module>

       NameError: name 'install' is not defined

       ----------------------------------------
       Cleaning up...
       Command /app/.heroku/python/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_u51681/distribute/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-FRUnI0-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_u51681/distribute
       Storing debug log for failure in /app/.pip/pip.log

 !     Push rejected, failed to compile Python app

To git@heroku.com:evening-headland-7388.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:evening-headland-7388.git'

When I look at the file /app/.pip/pip.log, it shows the following:当我查看文件 /app/.pip/pip.log 时,它显示以下内容:

# cat /root/.pip/pip.log 

------------------------------------------------------------
/usr/bin/pip run on Thu Apr 10 19:08:31 2014
Exception:
Traceback (most recent call last):

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/basecommand.py", line 122, in main
    status = self.run(options, args)

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/commands/install.py", line 257, in run
    InstallRequirement.from_line(name, None))

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/req.py", line 172, in from_line
    return cls(req, comes_from, url=url, prereleases=prereleases)

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/req.py", line 70, in __init__
    req = pkg_resources.Requirement.parse(req)

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/_vendor/pkg_resources.py", line 2606, in parse
    reqs = list(parse_requirements(s))

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/_vendor/pkg_resources.py", line 2544, in parse_requirements
    line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")

  File "/usr/lib/python2.6/site-packages/pip-1.5.4-py2.6.egg/pip/_vendor/pkg_resources.py", line 2512, in scan_list
    raise ValueError("Expected "+item_name+" in",line,"at",line[p:])

ValueError: ('Expected version spec in', 'argparse,', 'at', ',')

Is anyone able to tell me how to fix this?有没有人能告诉我如何解决这个问题? Thanks for any help you can give.谢谢你提供的所有帮助。

Updated on 4-21-2014: 2014 年 4 月 21 日更新:

Here's the latest output from the commands after removing argparse from requirements.txt:以下是从 requirements.txt 中删除 argparse 后命令的最新输出:

[root@clearos wrench]# git push heroku master
Enter passphrase for key '/root/.ssh/id_rsa': 
Enter passphrase for key '/root/.ssh/id_rsa': 
Initializing repository, done.
Counting objects: 18, done.
Compressing objects: 100% (16/16), done.
Writing objects: 100% (18/18), 9.26 KiB, done.
Total 18 (delta 4), reused 0 (delta 0)

-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.6.
-----> Preparing Python runtime (python-2.7.6)
-----> Installing Setuptools (2.1)
-----> Installing Pip (1.5.4)
-----> Installing dependencies using Pip (1.5.4)
       Downloading/unpacking Flask==0.10.1 (from -r requirements.txt (line 1))
         Running setup.py (path:/tmp/pip_build_u51702/Flask/setup.py) egg_info for package Flask

           warning: no files found matching '*' under directory 'tests'
           no previously-included directories found matching 'docs/_build'
           no previously-included directories found matching 'docs/_themes/.git'
       Downloading/unpacking Jinja2==2.7.1 (from -r requirements.txt (line 2))
         Running setup.py (path:/tmp/pip_build_u51702/Jinja2/setup.py) egg_info for package Jinja2

           warning: no files found matching '*' under directory 'custom_fixers'
       Downloading/unpacking MarkupSafe==0.18 (from -r requirements.txt (line 3))
         Downloading MarkupSafe-0.18.tar.gz
         Running setup.py (path:/tmp/pip_build_u51702/MarkupSafe/setup.py) egg_info for package MarkupSafe

       Downloading/unpacking Werkzeug==0.9.4 (from -r requirements.txt (line 4))
         Running setup.py (path:/tmp/pip_build_u51702/Werkzeug/setup.py) egg_info for package Werkzeug

           warning: no files found matching '*' under directory 'werkzeug/debug/templates'
           warning: no files found matching '*' under directory 'tests'
           no previously-included directories found matching 'docs/_build'
       Downloading/unpacking argparse==1.2.1 (from -r requirements.txt (line 5))
         argparse an externally hosted file and may be unreliable
         Running setup.py (path:/tmp/pip_build_u51702/argparse/setup.py) egg_info for package argparse

           no previously-included directories found matching 'doc/_build'
           no previously-included directories found matching 'env24'
           no previously-included directories found matching 'env25'
           no previously-included directories found matching 'env26'
           no previously-included directories found matching 'env27'
       Downloading/unpacking distribute==0.6.27 (from -r requirements.txt (line 6))
         Running setup.py (path:/tmp/pip_build_u51702/distribute/setup.py) egg_info for package distribute

       Downloading/unpacking itsdangerous==0.23 (from -r requirements.txt (line 7))
         Running setup.py (path:/tmp/pip_build_u51702/itsdangerous/setup.py) egg_info for package itsdangerous

       Downloading/unpacking plivo==0.9.1 (from -r requirements.txt (line 8))
         Downloading plivo-0.9.1.tar.gz
         Running setup.py (path:/tmp/pip_build_u51702/plivo/setup.py) egg_info for package plivo

       Downloading/unpacking python-dateutil==2.1 (from -r requirements.txt (line 9))
         Running setup.py (path:/tmp/pip_build_u51702/python-dateutil/setup.py) egg_info for package python-dateutil

       Downloading/unpacking python-simple-hipchat==0.1 (from -r requirements.txt (line 10))
         Downloading python-simple-hipchat-0.1.zip
         Running setup.py (path:/tmp/pip_build_u51702/python-simple-hipchat/setup.py) egg_info for package python-simple-hipchat

       Downloading/unpacking pytz==2013d (from -r requirements.txt (line 11))
         Running setup.py (path:/tmp/pip_build_u51702/pytz/setup.py) egg_info for package pytz

           warning: no files found matching '*.pot' under directory 'pytz'
       Downloading/unpacking redis==2.8.0 (from -r requirements.txt (line 12))
         Running setup.py (path:/tmp/pip_build_u51702/redis/setup.py) egg_info for package redis

       Downloading/unpacking requests==1.2.3 (from -r requirements.txt (line 13))
         Running setup.py (path:/tmp/pip_build_u51702/requests/setup.py) egg_info for package requests

       Downloading/unpacking rq==0.3.11 (from -r requirements.txt (line 14))
         Downloading rq-0.3.11.tar.gz
         Running setup.py (path:/tmp/pip_build_u51702/rq/setup.py) egg_info for package rq

       Downloading/unpacking simplejson==3.3.0 (from -r requirements.txt (line 15))
         Running setup.py (path:/tmp/pip_build_u51702/simplejson/setup.py) egg_info for package simplejson

       Downloading/unpacking six==1.4.1 (from -r requirements.txt (line 16))
         Downloading six-1.4.1.tar.gz
         Running setup.py (path:/tmp/pip_build_u51702/six/setup.py) egg_info for package six

       Downloading/unpacking times==0.6.2 (from -r requirements.txt (line 17))
         Downloading times-0.6.2-py2.py3-none-any.whl
       Installing collected packages: Flask, Jinja2, MarkupSafe, Werkzeug, argparse, distribute, itsdangerous, plivo, python-dateutil, python-simple-hipchat, pytz, redis, requests, rq, simplejson, six, times
         Running setup.py install for Flask

           warning: no files found matching '*' under directory 'tests'
           no previously-included directories found matching 'docs/_build'
           no previously-included directories found matching 'docs/_themes/.git'
         Running setup.py install for Jinja2

           warning: no files found matching '*' under directory 'custom_fixers'
         Running setup.py install for MarkupSafe

           building 'markupsafe._speedups' extension
           gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/app/.heroku/python/include/python2.7 -c markupsafe/_speedups.c -o build/temp.linux-x86_64-2.7/markupsafe/_speedups.o
           gcc -pthread -shared build/temp.linux-x86_64-2.7/markupsafe/_speedups.o -o build/lib.linux-x86_64-2.7/markupsafe/_speedups.so
         Running setup.py install for Werkzeug

           warning: no files found matching '*' under directory 'werkzeug/debug/templates'
           warning: no files found matching '*' under directory 'tests'
           no previously-included directories found matching 'docs/_build'
         Running setup.py install for argparse

           no previously-included directories found matching 'doc/_build'
           no previously-included directories found matching 'env24'
           no previously-included directories found matching 'env25'
           no previously-included directories found matching 'env26'
           no previously-included directories found matching 'env27'
         Running setup.py install for distribute
           Before install bootstrap.
           Scanning installed packages
           Setuptools installation detected at /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg
           Egg installation
           Patching...
           Renaming /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg into /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg.OLD.1398135525.78
           Patched done.
           Relaunching...
           Traceback (most recent call last):
             File "<string>", line 1, in <module>
           NameError: name 'install' is not defined
           Complete output from command /app/.heroku/python/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_u51702/distribute/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-HEnm1N-record/install-record.txt --single-version-externally-managed --compile:
           Before install bootstrap.

       Scanning installed packages

       Setuptools installation detected at /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg

       Egg installation

       Patching...

       Renaming /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg into /app/.heroku/python/lib/python2.7/site-packages/setuptools-2.1-py2.7.egg.OLD.1398135525.78

       Patched done.

       Relaunching...

       Traceback (most recent call last):

         File "<string>", line 1, in <module>

       NameError: name 'install' is not defined

       ----------------------------------------
       Cleaning up...
       Command /app/.heroku/python/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_u51702/distribute/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-HEnm1N-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_u51702/distribute
       Storing debug log for failure in /app/.pip/pip.log

 !     Push rejected, failed to compile Python app

To git@heroku.com:evening-headland-7388.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:evening-headland-7388.git'

That last line:最后一行:

ValueError: ('Expected version spec in', 'argparse,', 'at', ',')

Makes me think that in your requirements.txt file, you have argparse .让我觉得在您的requirements.txt文件中,您有argparse argparse is a built-in that sometimes mistakenly gets output by pip freeze (along with wsgiref ). argparse是一个内置函数,有时会错误地通过pip freeze获取输出(以及wsgiref )。 Can you check that file and remove the line?您可以检查该文件并删除该行吗?

Also see this answer另请参阅此答案

I suspect your requirements.txt has an old version of distribute when you should be using some version of setuptools .当您应该使用某些版本的setuptools时,我怀疑您的requirements.txt有一个旧版本的distribute See Django deployment issue on Heroku with exact clone of running app: PUSH REJECTED ERROR .请参阅Heroku 上的 Django 部署问题,并使用正在运行的应用程序的精确克隆:PUSH REJECTED ERROR

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM