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
Odpowiedz
Potrzebujesz pakietu devel UnixODBC. Nie wiem, jakiego distro używasz, ale możesz google i budować ze źródła.
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')
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. –
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
Wielkie dzięki! Spróbuję tego. –
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.
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. –
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
Czy zdarzyło Ci się, że to działa na Heroku? – cph
@cph Ten projekt aktualnie działa na Heroku z taką konfiguracją https://github.com/bmwant/pr-review-notifier –