2015-07-11 10 views
18

Próbuję zainstalować PyODBC na Heroku, ale dostaję fatal error: sql.h: No such file or directory w logach, gdy pip działa. Jak naprawić ten błąd?sql.h nie znaleziono podczas instalowania PyODBC na Heroku

+1

Czy zdarzyło Ci się, że to działa na Heroku? – cph

+1

@cph Ten projekt aktualnie działa na Heroku z taką konfiguracją https://github.com/bmwant/pr-review-notifier –

Odpowiedz

2

Potrzebujesz pakietu devel UnixODBC. Nie wiem, jakiego distro używasz, ale możesz google i budować ze źródła.

39

Aby śledzić na poniższej odpowiedzi ...

Przykład dla Ubuntu:

sudo apt-get install unixodbc unixodbc-dev 

Przykład CentOS:

sudo yum install unixODBC-devel 

W systemie Windows:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=yourserver.yourcompany.com;DATABASE=yourdb;UID=user;PWD=password') 

W systemie Linux:

conn = pyodbc.connect('DRIVER={FreeTDS};SERVER=yourserver.yourcompany.com;PORT=1433;DATABASE=yourdb;UID=user;PWD=password;TDS_VERSION=7.2') 
+0

Hi Flipper! Thanks for the commands. Używam Git Bash dla Windows. Czy możesz zasugerować, jak to zrobić. Jeszcze jedną rzeczą jest to, że mogę zainstalować lokalnie pakiet Pyodbc w moim systemie. Ale kiedy serwer Heroku próbuje zainstalować ten sam pakiet po stronie serwera, otrzymuję ten błąd. –

+0

Nie ma problemu! Używasz Windows do programowania i Linuxa na Heroku? Może to być trudne (Święty Graal ma mieć tak jak to tylko możliwe identyczne środowisko rozwoju i produkcji). Najpierw proponuję zdecydowanie używając virtualenv, następnie używając pyodbc ze sterownikiem SQL Server na Windows/dev i FreeTDS/unixODBC na Linux/prod Heroku. Zmienię mój przykład powyżej. – FlipperPA

+0

Wielkie dzięki! Spróbuję tego. –

-1

Pozostałe odpowiedzi są mniej więcej poprawne; brakuje Ci pakietu unixodbc-dev[el] dla twojego systemu operacyjnego; to właśnie potrzebuje pip, aby zbudować pyodbc ze źródła.

Jednak znacznie łatwiej jest zainstalować pyodbc za pośrednictwem menedżera pakietów systemowych. Na przykład na Debianie/Ubuntu będzie to apt-get install python-pyodbc. Ponieważ pyodbc ma wiele skompilowanych komponentów i interfejsów mocno z pakietami UnixODBC na poziomie systemu operacyjnego, prawdopodobnie lepiej pasuje do pakietu systemowego niż do Pythona/PIP-a.

Wciąż możesz wymienić go jako zależność w plikach requirements.txt, jeśli tworzysz kod do dystrybucji, ale zazwyczaj łatwiej będzie zainstalować go za pośrednictwem systemu PM.

+1

Jedynym problemem z instalacją pyodbc z repozytoriów OS jest to, że są to * naprawdę stare * wersje pyodbc. IIRC repozytoria Ubuntu instalują v3.0.7, podczas gdy obecna stabilna wersja, jak to piszę to v4.0.21, a 4.x jest znacznie lepsza niż 3.x w obsłudze Unicode. –

0

Możesz dodać Heroku zbudować pakiet do preinstalacji wymagane apt pakiety pierwsze

heroku buildpacks:add --index 1 https://github.com/heroku/heroku-buildpack-apt 

Dodaj Aptfile w katalogu głównym katalogu i do repozytorium oraz

unixodbc 
unixodbc-dev 
python-pyodbc 
libsqliteodbc 

będzie zainstalować wszystko, co trzeba pracować z pakietami pyodbc lub aioodbc z Pythona na Heroku

Powiązane problemy