Python2.7 - pip install pymssql завершается неудачно в CentOS 6.3

Я пытаюсь установить Pymssql для Python на компьютере с CentOS, но он продолжает работать со мной.

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

FreeTDS-разви

питон-разви

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

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?

РЕДАКТИРОВАТЬ: Больше информации

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

sudo find / -name "sqlfront.h"

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

/usr/include/freetds/sqlfront.h

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

6 ответов

Решение

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

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

Потом работает

pip install pymssql

Был успешен.

Я ссылался на этот ответ - Установка pymssql в Centos 6.6 64-bit

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

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

Для установки pymssql на centos 6.3, 6.5 необходимо:

yum install freetds freetds-devel python-devel

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

pip install pymssql

Или же

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

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

python setup.py install

Вы не упомянули, какую версию 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 installpymssql:

# 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...

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

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

sudo find / -name "sqlfront.h"

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

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

Сделать:

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

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

Добавьте include-путь к тому, где расположен sqlfront.h:

export C_INCLUDE_PATH=/usr/include/freetds/

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

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

Другие вопросы по тегам