2016-04-25 5 views
1

Ich benutze eine heroku App und verwende pyODBC.pyodbc Installation auf dem Heroku Server Fehler Befehl "gcc" ist fehlgeschlagen mit Exit status 1 - Django Projekt

Ich bekomme diesen Fehler, wenn ich versuche, Pyodbc auf meinem Heroku-Server zu installieren.

Das gleiche passiert, wenn ich pyodbc in die Datei requirements.txt putte.

Ich verstehe einfach nicht, was aus diesem Fehler zu tun ist, und ich kann nicht finden, wie Befehle wie sudo apt-get auf dem Heroku-Server durch die Windows heroku toolbelt zu verwenden.

Dies ist der Fehlerprozess.

C:\Users\mads\businesszone>heroku run pip install pyodbc 
Running pip install pyodbc on businesszone... up, run.9537 
Collecting pyodbc 
    Downloading pyodbc-3.0.10.tar.gz (68kB) 
    100% |████████████████████████████████| 71kB 4.3MB/s 
Installing collected packages: pyodbc 
    Running setup.py install for pyodbc ... error 
    Complete output from command /app/.heroku/python/bin/python -u -c "import se 
tuptools, tokenize;__file__='/tmp/pip-build-jJIUQ3/pyodbc/setup.py';exec(compile 
(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file_ 
_, 'exec'))" install --record /tmp/pip-J0_eAS-record/install-record.txt --single 
-version-externally-managed --compile: 
    running install 
    running build 
    running build_ext 
    building 'pyodbc' extension 
    creating build 
    creating build/temp.linux-x86_64-2.7 
    creating build/temp.linux-x86_64-2.7/tmp 
    creating build/temp.linux-x86_64-2.7/tmp/pip-build-jJIUQ3 
    creating build/temp.linux-x86_64-2.7/tmp/pip-build-jJIUQ3/pyodbc 
    creating build/temp.linux-x86_64-2.7/tmp/pip-build-jJIUQ3/pyodbc/src 
    gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstr 
ict-prototypes -fPIC -DPYODBC_VERSION=3.0.10 -DPYODBC_UNICODE_WIDTH=2 -I/Applica 
tions/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacO 
SX10.8.sdk/usr/include -I/app/.heroku/python/include/python2.7 -c /tmp/pip-build 
-jJIUQ3/pyodbc/src/cnxninfo.cpp -o build/temp.linux-x86_64-2.7/tmp/pip-build-jJI 
UQ3/pyodbc/src/cnxninfo.o -Wno-write-strings 
    cc1plus: warning: command line option `-Wstrict-prototypes' is valid for C/O 
bjC but not for C++ [enabled by default] 
    In file included from /tmp/pip-build-jJIUQ3/pyodbc/src/cnxninfo.cpp:8:0: 
    /tmp/pip-build-jJIUQ3/pyodbc/src/pyodbc.h:52:17: fatal error: sql.h: No such 
file or directory 
    #include <sql.h> 
        ^
    compilation terminated. 
    error: command 'gcc' failed with exit status 1 

    ---------------------------------------- 
Command "/app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__fil 
e__='/tmp/pip-build-jJIUQ3/pyodbc/setup.py';exec(compile(getattr(tokenize, 'open 
', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --r 
ecord /tmp/pip-J0_eAS-record/install-record.txt --single-version-externally-mana 
ged --compile" failed with error code 1 in /tmp/pip-build-jJIUQ3/pyodbc/ 

Ich habe auch versucht, einige der alten Pyodbc Version durch Pip und thorugh der zip aus dem alten Google Code Projekt zu installieren: https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pyodbc/pyodbc-3.0.7.zip



UPDATE :: Sie müssen Mach dein eigenes Heroku Buildpack. siehe Bild enter image description here

help output on heroku server

+0

Haben Sie jemals eine Lösung dafür gefunden? – whieronymus

+0

@whieronymus siehe update – MadsVJ

+0

Danke @MadsVJ hast du es eingerichtet und läuft? Ich endete mit einem alternativen Buildpack und Treiber, die ich auf der Heroku Buildpacks Seite gefunden habe. Ich sah dort keinen, der für unixodbc/pyodbc arbeitete, aber es gab einen für freeTDS/pymssql (https://elements.heroku.com/buildpacks/m1schka/heroku-buildpack-python). Ich testete die Pymssql-Bibliothek und die api/Funktionalität war (fast) identisch mit pyodbc. Also portierte ich meinen vorhandenen Code (nur eine kleine Klasse wirklich) von pyodbc nach pymssql, installierte das Buildpack und bin nun betriebsbereit. – whieronymus

Antwort

5

Sie haben noch die unixODBC dev Paket installiert. Ich bin mir nicht ganz sicher, wie auf Heroku installieren, aber hier sind zwei Beispiele:

Beispiel für Ubuntu:

sudo apt-get install unixodbc unixodbc-dev 

Beispiel für CentOS:

sudo yum install unixODBC-devel 

Sie werden wahrscheinlich auch wollen um auch die Installation eines virtualenv zu prüfen, anstatt eine systemweite Installation von pyodbc durchzuführen.

+0

Danke für die Antwort, @flipperPA! Der Heroku-Server unterstützt keine sudo-Befehle. Ich denke, ich muss herausfinden, wie man Module wie Unixodbc auf Heroku-Servern installiert. Ich habe eine virtualenv, ich habe gerade den Befehl, um den Fehler zu erzwingen - sollte wahrscheinlich gesagt haben, dass. – MadsVJ

Verwandte Themen