instalar - python download
La instalaciĆ³n de pyodbc falla en OSX 10.9(Mavericks) (13)
Cuando pip install pyodbc
, obtengo
In file included from .../build/pyodbc/src/buffer.cpp:12:
.../build/pyodbc/src/pyodbc.h:52:10: fatal error: ''sql.h'' file not found
#include <sql.h>
^
1 error generated.
error: command ''cc'' failed with exit status 1
Parece que Mavericks no tiene sql.h en / usr / include
¿Alguien logró instalar Pyodbc? ¿Hay una solución conocida?
Acabo de pasar por todo el proceso en Mac OS X; conectando pyodbc a MS SQL Server 2014. Todo el proceso es el siguiente:
Tubería de conexión:
pyodbc ----> iodbc ----> freetds ----> MS SQL Server 2014
Build freetds (el controlador / conector de SQL Server):
./configure --prefix=/usr/local --with-tdsver=8.0 make sudo make install // you should see /usr/local/lib/libtdsodbc.so was generated //test method 1: TDSVER=8.0 tsql -H hostname -p 1433 -U username -P XXX -D databasename //test method 2: //config /usr/local/etc/freetds.conf [mssqlserver] host = XXX port = 1433 tds version = 8.0 //run tsql -S mssqlserver -U username -P XXX -D databasename //if you can run sql, good to go!
Construir iodbc (administrador ODBC):
//download from github, go to the folder cd mac ./configure ./make sudo ./make install //config /usr/local/etc/odbc.ini [mssqlserver] Driver=/usr/local/lib/libtdsodbc.so TDS_Version=8.0 Server=xxxx Port = 1433 Trace = Yes Description=XXX //test which iodbctest iodbctest DSN=masqlserver;UID=xxx;PWD=xxx //if you can run sql, good to go!
Conecte pyodbc (contenedor ODBC de Python) a iodbc:
pip install pyodbc //in python, conn = pyodbc.connect("DSN=mssqlserver;UID=xxx;PWD=xxxx")
Agregaré mi $ 0.02 a esto. La respuesta de Vitaly fue la principal inspiración.
OSX 10.9.5, MacPorts 2.3.4, pip 8.1.2 (que no tenía una opción --no-install), virtualenv 14.0.6
También ayudó: https://.com/a/22942120/1394353
De todos modos, instale iODBC a través de MacPorts
sudo port install libiodbc
El sql.h que falta es depositado por MacPorts @ / opt / local / include
Ahora, dile a pip dónde puede encontrar los includes (que es donde la respuesta vinculada fue útil):
pip install pyodbc --global-option=build_ext --global-option="-I/opt/local/include/"
Como pip
ya no admite la --no-install
y la opción --download
está en desuso. Tenía que seguir los siguientes pasos.
pip download pyodbc
tar -zxvf pyodbc-4.0.17.tar.gz
python setup.py build_ext --include-dirs=[DIRECTORY CONTAINING THE HEADERS]
pip install pyodbc
Como notó, OSX Mavericks eliminó los encabezados sql que son necesarios para la compilación de PyODBC. Seguir estos pasos me permitió instalar PyODBC:
- Asegúrese de tener instalada la biblioteca iODBC ( http://www.iodbc.org/ )
- Descargar y extraer fuentes iODBC
- Ejecutar
pip install --no-install pyodbc
-
cd [VIRTUAL_ENV]/build/pyodbc
- Ejecute
python setup.py build_ext --include-dirs=[LIBIODBC_SOURCES]/include/
Ejecutar
pip install --no-download pyodbc
:Installing collected packages: pyodbc Running setup.py install for pyodbc warning: no files found matching ''tests/*'' Successfully installed pyodbc Cleaning up...
También podría copiar los archivos en [libiodbc_sources]/include/
a mi /usr/include
y simplemente ejecutar pip install pyodbc
, pero no quería agregar archivos manualmente a las carpetas del sistema.
Después de muchos callejones sin salida, esto funcionó para mí:
$ brew unlink unixodbc
$ brew install unixodbc --universal
$ sudo pip install --upgrade --global-option=build_ext --global-option="-I/usr/local/include" --global-option="-L/usr/local/lib" --allow-external pyodbc --allow-unverified pyodbc pyodbc
Encontré el mismo problema hoy en ubuntu 14.04. Encontré a un chico en el siguiente enlace, dijo que debería instalar unixodbc-dev.
https://code.google.com/p/pyodbc/issues/detail?id=55
Lo hice, y luego el éxito de instalación de pip.
Espero que esto sea útil.
Esto funcionó para mí después de probar casi todo lo demás sugerido.
brew install unixodbc
sudo pip install --upgrade --global-option=build_ext --global-option="-I/usr/local/include" --global-option="-L/usr/local/lib" --allow-external pyodbc --allow-unverified pyodbc pyodbc
Ejecutando Mac OS 10.11.1, Homebrew 0.9.5 y pip 7.1.2
No me gustó la respuesta de @Vitaly porque parece que hay un problema al crear paquetes en Mavericks que tiene que ver con la falta de soporte para enlaces duros. No pude obtener el paquete para construir.
Así que opté por la segunda sugerencia de [libiodbc_sources]/include/
que consistía en copiar los archivos necesarios del [libiodbc_sources]/include/
a /usr/include
y la instalación funcionó find. Aquí hay una lista de los archivos que necesitará copiar:
- sql.h
- sqltypes.h
- iodbcunix.h
- sqlext.h
- sqlucode.h
Puede usar Homebrew para instalar unixodbc, luego pyodbc vía pip de la manera habitual.
brew install unixodbc && pip install pyodbc
Esto funciona para mí en Mavericks.
Si ve errores como
clang: error: unknown argument: ''-mno-fused-madd'' [-Wunused-command-line-argument-hard-error-in-future]
El problema es que con Mavericks Apple ha eliminado gcc de las herramientas de desarrollo de línea de comandos; ahora está clang simplemente enlazado a gcc . La bandera --mno-fused-madd
no es compatible con clang (lo mismo ocurre con muchas otras banderas).
Una solución podría ser instalar gcc usando homebrew u otro método y symlink / usr / bin / gcc en un gcc apropiado.
Una solución más simple que funcionó para mí es la supresión de estos errores convirtiéndolos en advertencias:
export CFLAGS=-Qunused-arguments
Después de la configuración que pude pip install pyodbc
sin errores.
¡PD! En futuras versiones de clang esto podría no ser posible. Al menos funciona en:
$> gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.38) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix
Refs:
https://bitbucket.org/cffi/cffi/issue/46/unused-mno-fused-madd-clang-warnings-on-os https://coderwall.com/p/lqpp8w clang: error: opción no soportada ''- static-libgcc ''en Mac OSX Mavericks
Tuve éxito con sudo port install py-pyodbc
Ver mis instrucciones de instalación que he escrito después de algunos intentos inútiles de las otras respuestas proporcionadas:
Primero, instale las siguientes bibliotecas:
$ brew install unixodbc
$ brew install freetds --with-unixodbc
FreeTDS ya debería funcionar ahora, sin configuración:
$ tsql -S [IP or hostname] -U [username] -P [password]
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> ^D
En unixODBC, tenemos que vincular al controlador, edite /usr/local/etc/odbcinst.ini
:
[FreeTDS]
Description = TD Driver (MSSQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsodbc.so
FileUsage = 1
El comando de prueba que estamos usando requiere la configuración de un DSN, por lo tanto, edite /usr/local/etc/odbc.ini
:
[MYDSN]
Driver = FreeTDS
Server = [IP address]
Port = 1433
La configuración de su DNS puede variar, es posible que necesite las directivas TDS_Version
o TDS_Version
. Lo anterior funcionó para mí para SQL Server 2008 R2. Ahora, ejecute el comando de prueba:
$ isql MYDSN [username] [password] -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> ^D
Si la prueba tuvo éxito, puede continuar con la instalación de la pyodbc
biblioteca de Python. La versión actual de escritura (3.0.7) no se vincula con unixODBC en OS X, por lo que debe realizarse un cambio en setup.py
. Descargue el paquete fuente y extráigalo en algún lugar. Encuentre las siguientes líneas (146-147):
elif sys.platform == ''darwin'':
# OS/X now ships with iODBC.
Y cambia esta línea:
settings[''libraries''].append(''iodbc'')
dentro:
settings[''libraries''].append(''odbc'')
A continuación, ejecute el siguiente comando para instalar:
> python install .
Ahora pyodbc debería funcionar:
import pyodbc
pyodbc.connect(''DSN=MYDSN;UID=[username];PWD=[password]'')
No necesita tener su DSN configurado en odbc.ini
, por lo que borre ese archivo. Probablemente desee seleccionar una base de datos en connect, así que cambie su línea de conexión para leer:
pyodbc.connect(''DRIVER=FreeTDS;SERVER=[IP address];PORT=1433;DATABASE=[database];UID=[username];PWD=[password]'')
Tenga en cuenta que también puede vincular al archivo de la biblioteca de FreeTDS en lugar de usar odbcinst.ini
, así:
pyodbc.connect(''DRIVER=/usr/local/lib/libtdsodbc.so;SERVER=[IP address];PORT=1433;DATABASE=[database];UID=[username];PWD=[password]'')
Versión del SO: El Capitan 10.11.6 Versión de Python: 2.7.11 Versión de Pip: pip 9.0.1
1. Install iodbc for Mac (my installation is in [iODB_loc]=/usr/local/iODBC)
2. pip install --download [download_location] pyodbc==3.0.10
3. cd [download_location]
4. tar -xvzf pyodbc-3.0.10.tar.gz
5. cd pyodbc-3.0.10
6. vim setup.py:
settings[''libraries''].append(''odbc'')
->
settings[''libraries''].append(''iodbc'')
7. python setup.py build_ext --include-dirs=[iODB_loc]/include/
8. pip install --upgrade .