2014-06-05 6 views
1

필자는 Python 앱을 Heroku에 탑재하고 있으며, 요구 사항을 설치하고 있으며 결국 충돌합니다. M2Crypto가 정리되기 전에 컴파일Heroku에서 빌드 오류가 발생했습니다.

Flask==0.10.1 
SQLAlchemy==0.7.8 
Flask-Login==0.2.3 
Flask-WTF==0.6 
Flask-Gravatar 
Flask-OAuth==0.12 
Flask-SQLAlchemy 
Flask-Mail 
python-dateutil 
alembic 
psycopg2 
requests 
itsdangerous 
markdown 
raven 
blinker 
flask-cache 
flask-heroku 
pygeoip 
flask-babel 
beautifulsoup4 
python-memcached 
-e git+https://github.com/Hypernode/M2Crypto#egg=M2Crypto-0.22.dev 
birdy 

:

.... 
SWIG/_m2crypto_wrap.c:4237: warning: 'saltlen' may be used uninitialized in this function 
gcc -pthread -shared build/temp.linux-x86_64-2.7/SWIG/_m2crypto_wrap.o -L/usr/lib -lssl -lcrypto -o build/lib.linux-x86_64-2.7/M2Crypto/__m2crypto.so 
Creating /tmp/build_5a922389-3865-4fa2-9bc3-ecfa3cd84781/.heroku/venv/lib/python2.7/site-packages/M2Crypto.egg-link (link to .) 
M2Crypto 0.22.dev is already the active version in easy-install.pth 

Installed /tmp/build_5a922389-3865-4fa2-9bc3-ecfa3cd84781/.heroku/src/m2crypto 
Successfully installed M2Crypto 
Cleaning up... 
Traceback (most recent call last): 
    File "/tmp/buildpack_5a922389-3865-4fa2-9bc3-ecfa3cd84781/vendor/virtualenv-1.7/virtualenv.py", line 16, in <module> 
import tempfile 
    File "/usr/local/lib/python2.7/tempfile.py", line 32, in <module> 
import io as _io 
    File "/usr/local/lib/python2.7/io.py", line 51, in <module> 
import _io 
ImportError: /tmp/build_5a922389-3865-4fa2-9bc3-ecfa3cd84781/.heroku/venv/lib/python2.7/lib-dynload/_io.so: undefined symbol: _PyLong_AsInt 
!  Error making virtualenv relocatable 


!  Push rejected, failed to compile Python app 

이 내가 사용하고있는 requrements.txt은 다음과 같습니다 아래는 로그의 꼬리입니다.

나중에 편집 :

내가 Heroku가 상자에 pip 명령을 실행하면 나는 아주에 simmilar 오류 얻을 :

Traceback (most recent call last): 
    File "/app/.heroku/venv/bin/pip", line 10, in <module> 
load_entry_point('pip==1.0.2', 'console_scripts', 'pip')() 
    File "/app/.heroku/venv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 337, in load_entry_point 
return get_distribution(dist).load_entry_point(group, name) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 2279, in load_entry_point 
return ep.load() 
    File "/app/.heroku/venv/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py", line 1989, in load 
entry = __import__(self.module_name, globals(),globals(), ['__name__']) 
    File "/app/.heroku/venv/lib/python2.7/site-packages/pip-1.0.2-py2.7.egg/pip/__init__.py", line 5, in <module> 
    import subprocess 
    File "/usr/local/lib/python2.7/subprocess.py", line 427, in <module> 
    import select 
ImportError: /app/.heroku/venv/lib/python2.7/lib-dynload/select.so: undefined symbol: _PyInt_AsInt 
+0

전체 빌드 로그는 다음과 같습니다. http://pastebin.com/m7dx5rFF – ftraian

답변

2

그것은 Heroku가 밝혀 그냥 파이썬 2.7.7에 자신의 런타임 업데이트 runtime.txt를 지정하고 응용 프로그램의 캐시를 제거 (두 번)하여 해결해야했습니다.

$ cat python-2.7.7>runtime.txt 

그런 다음 heroku repo 플러그인을 설치하고 캐시를 제거하십시오. 알 수없는 이유로 purge_cace가 처음으로 작동하지 않아 두 번 사용해야했습니다.

$ heroku plugins:install https://github.com/heroku/heroku-repo.git 
$ heroku repo:purge_cache -a appname 

자세한 내용 heroku-repo plugin here.

이 문제는 this stackoverflow thread 또는 this heroku forum thread에서 논의됩니다.

관련 문제