izhevsk.ru Главная /  Программирование /  Python 3 на Cygwin не видит модуль
тема закрыта

Имя:
Пароль:
 зарегистрироваться | Войти через
напоминатель пароля
Python 3 на Cygwin не видит модуль
НОВАЯ ТЕМА правила | поиск | картинки | | | о форуме |
  Новости | Авто | Недвижимость | Работа | Бизнес | Стройка | Объявления | Совместная покупка | | |
  следующая тема | предыдущая тема
Автор Тема:   Python 3 на Cygwin не видит модуль   версия для печати
ELForcer
Рейтинг: 124/-54
-- написано 31-8-2017 15:47 ELForcer

Здравствуйте.
Столкнулся с проблемой при переносе проекта Python с Linux машины на Windows на эмулятор Cygwin.
Проблема в библиотеке pymssql которая и ставится тяжело, но и не хочет быть обнаруженным самим питоном даже после установки.
Скорее всего проблема в путях эмулятора, но что где именно прописывать - не знаю.

Стандартной командой 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:

Однако при запуске файла *.py
Он ругается
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

Кто знает, что где ему надо прописать, что бы Питон увидел этот модуль?
Еще находил вариант переименовать pyd в dll, не помогло.
Вариант ставить на виндовый Python не рассматриваю, там все файлы надо править на виндовую кодировку (и пересохранять в другой кодировке)+ правка путей в файлах + мучений с Pymssql на винде вроде еще больше.
Показать текст сообщения полностью
iBelt
Рейтинг: 17/-3
-- написано 1-9-2017 17:46 iBelt

quote:
Изначально написано ELForcer:

Стандартной командой pip3 install pymssql ругается то на отсутствие каких либо файлов (например frontsql.h), то на BASEVERSION_80.

Это потому, что ему для общения с MSSQL нужен пакет FreeTDS. Я не знаю, можно ли его как-то впендюрить в Cygwin, но стоит наверное порыться в установщике. Возможно просто выдрать заголовки из пакетов и скопировать куда нужно.

Насчёт whl подсказать ничего не могу.

ELForcer
Рейтинг: 124/-54
-- написано 1-9-2017 20:51 ELForcer

iBelt уже пробовал. Без Freetds сначала ругался на sqlfront.h при установке через pip3, а с установкой ругается на BASEVERSION_80. Причем неважно какая версия freeTDS, старая или новая (для Pymssql вроде как старая нужна).

iBelt
Рейтинг: 17/-3
-- написано 1-9-2017 22:53 iBelt

Ну а как именно "ругается на BASEVERSION_80"? В какой момент ругается?

Я бы вообще сначала проверил, работают ли тулзы из состава FreeTDS, типа fisql и bsqldb.

ELForcer
Рейтинг: 124/-54
-- написано 4-9-2017 14:50 ELForcer

Вот лог установки:
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


THE HEDGEHOG
Рейтинг: 613/-232
-- написано 4-9-2017 17:43 THE HEDGEHOG

quote:

Did you try this:

brew install freetds
Source: http://pymssql.org/en/latest/intro.html

If 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


пруф

история редактирования

ELForcer
Рейтинг: 124/-54
-- написано 4-9-2017 19:18 ELForcer

Я это видел. К сожалению, программы brew нет в Cygwin и его не установить через setup. Ну или я не знаю в каком пакете он есть. Поиск по вхождению не дал.

Тут еще читал что возможно в Питоне 3.6 нет поддержки модуля pymssql, попробую на 3.5 установить.

история редактирования

iBelt
Рейтинг: 17/-3
-- написано 5-9-2017 00:25 iBelt

Brew это всего лишь менеджер пакетов для OS X, суть в том, чтобы установить версию FreeTDS 0.91

На самом деле этого можно и не делать, просто залезь в 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. Жди новую версию или поищи форк где добрые люди пофиксили это. (в смысле если не хочешь/не умеешь сам в исходниках ковыряться)

история редактирования

ELForcer
Рейтинг: 124/-54
-- написано 5-9-2017 00:45 ELForcer

iBelt спасибо. Завтра попробую глянуть исходники. Новую версию можно и до нового года не дождаться.

200x150 320x240 400x300 800x600    без переносов   
быстрый ответ   

подпись
следующая тема | предыдущая тема

Главная /  Программирование /  Python 3 на Cygwin не видит модуль форумы izhevsk.ru

 
 
 
 
 
© ООО "Марк" 2020
 
Интернет-провайдер КК МАРК-ИТТ