Python2.7 - pip install pymssql не работает в CentOS 6.3

Я пытаюсь установить pymssql для Python на машине с CentOS, но у меня это не получается.

Я уже установил следующее:

freetds-devel

Python-разработка

Кажется, это исправление, с которым я постоянно сталкиваюсь при поиске, однако я уже установил оба из них, и я все еще получаю следующую ошибку:

pip install pymssql
Collecting pymssql
/usr/local/lib/python2.7/site-packages/pip-6.1.1-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:79: 
  Using cached pymssql-2.1.1.tar.gz
Installing collected packages: pymssql
  Running setup.py install for pymssql
    Complete output from command /usr/local/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-oU7MKZ/pymssql/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-PE9Gxh-record/install-record.txt --single-version-externally-managed --compile:
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('Red Hat Enterprise Linux Server', '6.3', '*******')
    setup.py: platform.libc_ver() => ('glibc', '2.3')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    running install
    running build
    running build_ext
    building '_mssql' extension
    creating build
    creating build/temp.linux-x86_64-2.7
    gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/local/include/python2.7 -c _mssql.c -o build/temp.linux-x86_64-2.7/_mssql.o -DMSDBLIB
    _mssql.c:314:22: error: sqlfront.h: No such file or directory
    In file included from _mssql.c:316:
    cpp_helpers.h:34:19: error: sybdb.h: No such file or directory
    _mssql.c:532: error: expected specifier-qualifier-list before ‘BYTE’
    _mssql.c:683: error: expected specifier-qualifier-list before ‘DBPROCESS’

    .............[Lots of errors removed from here]

    :22123: error: ‘SYBVARBINARY’ undeclared (first use in this function)
    _mssql.c:22135: error: ‘SYBVARCHAR’ undeclared (first use in this function)
    _mssql.c: At top level:
    _mssql.c:23607: error: expected ‘)’ before ‘val’
    _mssql.c:23689: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__Pyx_PyInt_from_py_DBINT’
    error: command 'gcc' failed with exit status 1

    ----------------------------------------
    Command "/usr/local/bin/python2.7 -c "import setuptools, tokenize;__file__='/tmp/pip-build-oU7MKZ/pymssql/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-PE9Gxh-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-oU7MKZ/pymssql

Итак, я вижу эту ошибку в журнале:

_mssql.c:314:22: ошибка: sqlfront.h: нет такого файла или каталога В файле, включенном из _mssql.c:316:

Что из поисков предполагает, что мне нужно установить freetds-devel и/или python-devel, но у меня уже есть.

Я также замечаю эту строку:

setup.py: Не использовать пакет FreeTDS

Я новичок в работе на базе Linux, поэтому я не уверен, означает ли это, что он вообще не использует FreeTDS или просто использует тот, который я скачал, вместо связанной версии или что-то в этом роде? Означает ли это, что загруженный мной freetds-devel используется неправильно? Если да, то как я могу заставить setup.py использовать скачанный мной freetds-devel?

Если freetds-devel не проблема, то есть ли что-то еще, что мне не хватает для установки pymssql?

EDIT : More info

Когда я запускаю следующую команду поиска:

sudo найти / -имя sqlfront.h

Файл, на который он жалуется, находится здесь:

/usr/include/freetds/sqlfront.h

Так это просто моя установка FreeTDS испорчена или что-то не так?


person Donal Rafferty    schedule 07.05.2015    source источник


Ответы (6)


Вам нужны эти заголовки, поэтому он терпит неудачу.

можешь сделать

sudo найти/-имя "sqlfront.h"

Вот возможный ответ:

Ошибка при установке pymssql в centos 7

Do a :

yum установить freetds-devel

Повторите попытку после установки.

person mihaitzateo    schedule 07.05.2015
comment
Когда я запускаю команду find, она находит файл здесь - /usr/include/freetds/sqlfront.h - я уже установил freetds-devel - person Donal Rafferty; 08.05.2015

Вы не указали, какую версию CentOS вы использовали. Поскольку вы сказали Python 2.7, я предполагаю, что CentOS 7. Если вы используете CentOS 6 и используете локально собранный Python, обновите свой вопрос.

В любом случае, в моей системе CentOS 7:

# rpm -q centos-release
centos-release-7-1.1503.el7.centos.2.8.x86_64

После установки репозиториев EPEL:

# yum -y install epel-release

И затем установка требований:

# yum -y install gcc python-pip python-devel freetds-devel

Мне удалось успешно pip install pymssql:

# pip install pymssql
Downloading/unpacking pymssql
  Downloading pymssql-2.1.1.tar.gz (2.4MB): 2.4MB downloaded
  Running setup.py (path:/tmp/pip-build-iWrHta/pymssql/setup.py) egg_info for package pymssql
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('CentOS Linux', '7.1.1503', 'Core')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']

    Installed /tmp/pip-build-iWrHta/pymssql/setuptools_git-1.1-py2.7.egg

Installing collected packages: pymssql
  Running setup.py install for pymssql
    setup.py: platform.system() => 'Linux'
    setup.py: platform.architecture() => ('64bit', 'ELF')
    setup.py: platform.linux_distribution() => ('CentOS Linux', '7.1.1503', 'Core')
    setup.py: platform.libc_ver() => ('glibc', '2.2.5')
    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include']
    setup.py: library_dirs = ['/usr/local/lib']
    building '_mssql' extension
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c _mssql.c -o build/temp.linux-x86_64-2.7/_mssql.o -DMSDBLIB
    gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/_mssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython2.7 -o build/lib.linux-x86_64-2.7/_mssql.so
    building 'pymssql' extension
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c pymssql.c -o build/temp.linux-x86_64-2.7/pymssql.o -DMSDBLIB
    gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/pymssql.o -L/usr/local/lib -L/usr/lib64 -lsybdb -lrt -lpython2.7 -o build/lib.linux-x86_64-2.7/pymssql.so

Successfully installed pymssql
Cleaning up...
person larsks    schedule 07.05.2015
comment
Обратите внимание, что точно такая же процедура работает с Python 2.6 в CentOS 6. - person larsks; 07.05.2015
comment
Я использую CentOS 6.3 - когда я запускаю вашу первую команду, я получаю - пакет centos-release не установлен - второй я получаю - пакет epel-release недоступен. - третий каждый уже установлен, за исключением python-pip, для которого я получаю это сообщение - Нет доступного пакета python-pip. - наконец, попытка установить pymssql приводит к ошибке в моем вопросе - person Donal Rafferty; 08.05.2015
comment
Обратите внимание, что на нем был Python 2.6, но мне пришлось установить Python 2.7 с помощью altinstall, чтобы заставить pip работать. - person Donal Rafferty; 08.05.2015

В результате всех ответов.

Для установки pymssql на centos 6.3, 6.5 нужно:

yum install freetds freetds-devel python-devel

Переместите файлы из /usr/include/ в /usr/local/include и запустите

pip install pymssql

Or

pip download pymssql
tar xzf pymsql*tar.gz
cd pymssql*

Отредактируйте setup.py и измените usr_local с «/usr/local» на «usr» и запустите:

python setup.py install
person Some    schedule 29.06.2017
comment
Запуск на AWS Linux (Centos). Мне нужны были только установки yum и pip, перемещение файлов не требовалось. - person Michael Rutherfurd; 16.10.2017

Похоже, что файлы находились не в том месте, где искала конфигурация setup.py.

Чтобы исправить это, я скопировал файлы из /usr/include/ в usr/local/include.

Затем работает

pip установить pymssql

Был успешен.

Я сослался на этот ответ - Установка pymssql в 64-разрядной версии Centos 6.6

Я предполагаю, что было бы лучше перейти на путь, используемый setup.py, но мне не удалось найти способ успешно это сделать.

person Donal Rafferty    schedule 08.05.2015

Добавьте путь, по которому находится sqlfront.h, следующим образом:

export C_INCLUDE_PATH=/usr/include/freetds/

а затем снова установите pymssql.

person pppk520    schedule 24.12.2015

У меня такая же ошибка. Вы должны установить freetds-devel.

person Eduardo M. Gargarella    schedule 23.08.2016
comment
Автор вопроса уже заявил, что они установили freetds-devel. - person Jeff B; 24.08.2016