Python2.7 - pip install pymssql се проваля на CentOS 6.3

Опитвам се да инсталирам pymssql за Python на CentOS машина, но продължава да ми се проваля.

Вече инсталирах следното:

freetds-devel

python-devel

Което изглежда е поправката, която продължавам да срещам при търсения, но вече съм инсталирал и двете и все още получавам следната грешка:

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 find / -name sqlfront.h

Файлът, от който се оплаква, се намира тук:

/usr/include/freetds/sqlfront.h

Така че просто моята инсталация на FreeTDS е объркана или какво не е наред?


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


Отговори (6)


Имате нужда от тези заглавки, затова се проваля.

можеш ли да направиш a

sudo find / -name "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 в Centos 6.6 64-bit

Предполагам, че би било по-добре да се промени пътя, използван от setup.py, но не можах да намеря начин да направя това успешно.

person Donal Rafferty    schedule 08.05.2015

Добавете включен път към мястото, където се намира sqlfront.h от:

export C_INCLUDE_PATH=/usr/include/freetds/

и след това pip инсталирайте 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