Стандартной командой pip3 install pymssql ругается то на отсутствие каких либо файлов (например frontsql.h), то на BASEVERSION_80.
Нашёл на сайте готовый вариант whl, скачал, установил через: pip3 install pymssql-2.1.3-cp36-none-any.whl
В папке site-package файлы появились.
Команда: pip 3 show pymssql показывает данные о пакете.
quote:
$ pip3 show pymssql
Name: pymssql
Version: 2.1.3
Summary: DB-API interface to Microsoft SQL Server for Python. (new Cython-based version)
Home-page: http://pymssql.org
Author: pymssql development team
Author-email: pymssql@googlegroups.com
License: LGPL
Location: /usr/lib/python3.6/site-packages
Requires:
quote:
import pymssql #работа с MS SQL
ModuleNotFoundError: No module named 'pymssql'
127.0.0.1 - - [31/Aug/2017 11:50:26] CGI script exit status 0x100
quote:
Изначально написано ELForcer:
Стандартной командой pip3 install pymssql ругается то на отсутствие каких либо файлов (например frontsql.h), то на BASEVERSION_80.
Это потому, что ему для общения с MSSQL нужен пакет FreeTDS. Я не знаю, можно ли его как-то впендюрить в Cygwin, но стоит наверное порыться в установщике. Возможно просто выдрать заголовки из пакетов и скопировать куда нужно.
Насчёт whl подсказать ничего не могу.
Я бы вообще сначала проверил, работают ли тулзы из состава FreeTDS, типа fisql и bsqldb.
quote:
$ pip3 install pymssql
Collecting pymssql
Using cached pymssql-2.1.3.tar.gz
Building wheels for collected packages: pymssql
Running setup.py bdist_wheel for pymssql ... error
Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-rl1ub8vx/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmp35p7bux_pip-wheel- --python-tag cp36:
setup.py: platform.system() =; 'CYGWIN_NT-6.0'
setup.py: platform.architecture() =; ('32bit', 'WindowsPE')
setup.py: platform.libc_ver() =; ('', '')
setup.py: Not using bundled FreeTDS
setup.py: include_dirs = []
setup.py: library_dirs = ['/usr/local/lib']
running bdist_wheel
running build
running build_ext
building '_mssql' extension
creating build
creating build/temp.cygwin-2.8.2-i686-3.6
gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python3/python3-3.6.1-2.i686/build=/usr/src/debug/python3-3.6.1-2 -fdebug-prefix-map=/usr/src/ports/python3/python3-3.6.1-2.i686/src/Python-3.6.1=/usr/src/debug/python3-3.6.1-2 -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python3/python3-3.6.1-2.i686/build=/usr/src/debug/python3-3.6.1-2 -fdebug-prefix-map=/usr/src/ports/python3/python3-3.6.1-2.i686/src/Python-3.6.1=/usr/src/debug/python3-3.6.1-2 -I/usr/include/python3.6m -c _mssql.c -o build/temp.cygwin-2.8.2-i686-3.6/_mssql.o -DMSDBLIB
_mssql.c: В функции «__pyx_f_6_mssql__tds_ver_str_to_constant»:
_mssql.c:18814:15: ошибка: «DBVERSION_80» undeclared (first use in this function)
__pyx_r = DBVERSION_80;
^
_mssql.c:18814:15: замечание: each undeclared identifier is reported only once for each function it appears in
error: command 'gcc' failed with exit status 1----------------------------------------
Failed building wheel for pymssql
Running setup.py clean for pymssql
Failed to build pymssql
quote:
Did you try this:brew install freetds
Source: http://pymssql.org/en/latest/intro.htmlIf you get this error:
__pyx_r = DBVERSION_80;
^
1 error generated.
then you can fix it with this:brew unlink freetds
brew install homebrew/versions/freetds091
and then install:pip install pymssql
source: https://github.com/pymssql/pymssql/issues/432
Тут еще читал что возможно в Питоне 3.6 нет поддержки модуля pymssql, попробую на 3.5 установить.
На самом деле этого можно и не делать, просто залезь в pymssql-2.1.3.tar.gz, поправь там в исходнике DBVERSION_80 на DBVERSION_71 и пересобери pip'ом. То, что разработчики FreeTDS считали версией протокола 8.0, на самом деле 7.1, просто это выяснилось только после того, как Microsoft соизволила опубликовать спецификацию протокола. Вот тут описано: http://www.freetds.org/userguide/choosingtdsprotocol.htm
Вообще это косяк того, кто делал pymssql, константа считается obsolete. Жди новую версию или поищи форк где добрые люди пофиксили это. (в смысле если не хочешь/не умеешь сам в исходниках ковыряться)