Ошибка установки pymssql на Mac OS X Lion - PullRequest
3 голосов
/ 06 февраля 2012

У меня установлен XCode, а также FreeTDS.Я попытался подключиться к моему SQL Server, и он отлично работает.

Теперь мне нужно разработать приложение на python, которое работает с этим SQL Server, и я пытаюсь установить pymsql, но я получил эту ошибку, когда яКоманда launchche sudo python setup.py:

==> sudo python setup.py install
running install
running bdist_egg
running egg_info
writing pymssql.egg-info/PKG-INFO
writing top-level names to pymssql.egg-info/top_level.txt
writing dependency_links to pymssql.egg-info/dependency_links.txt
reading manifest file 'pymssql.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pymssql.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.7-intel/egg
running install_lib
running build_ext
skipping '_mssql.c' Cython extension (up-to-date)
building '_mssql' extension
llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/sw/include -Ifreetds/nix_64/include -I/opt/local/include -I/opt/local/include/freetds -I/opt/local/freetds/include -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mssql.c -o build/temp.macosx-10.7-intel-2.7/_mssql.o -DMSDBLIB
_mssql.c: In function ‘__pyx_f_6_mssql_15MSSQLConnection_convert_python_value’:
_mssql.c:7322: warning: implicit conversion shortens 64-bit value into a 32-bit value
_mssql.c: In function ‘__pyx_f_6_mssql_15MSSQLConnection_get_result’:
_mssql.c:9554: warning: implicit conversion shortens 64-bit value into a 32-bit value
_mssql.c:9566: warning: implicit conversion shortens 64-bit value into a 32-bit value
_mssql.c: In function ‘__pyx_pf_6_mssql_20MSSQLStoredProcedure_2bind’:
_mssql.c:11146: warning: implicit conversion shortens 64-bit value into a 32-bit value
llvm-gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 build/temp.macosx-10.7-intel-2.7/_mssql.o -L/sw/lib -Lfreetds/nix_64/lib -L/opt/local/lib -L/opt/local/lib/freetds -L/opt/local/freetds/lib -lsybdb -lrt -o build/lib.macosx-10.7-intel-2.7/_mssql.so
ld: warning: directory not found for option '-L/sw/lib'
ld: warning: directory not found for option '-L/opt/local/lib'
ld: warning: directory not found for option '-L/opt/local/lib/freetds'
ld: warning: directory not found for option '-L/opt/local/freetds/lib'
ld: library not found for -lrt
collect2: ld returned 1 exit status
ld: warning: directory not found for option '-L/sw/lib'
ld: warning: directory not found for option '-L/opt/local/lib'
ld: warning: directory not found for option '-L/opt/local/lib/freetds'
ld: warning: directory not found for option '-L/opt/local/freetds/lib'
ld: library not found for -lrt
collect2: ld returned 1 exit status
lipo: can't open input file: /var/tmp//cc6eQsIN.out (No such file or directory)
error: command 'llvm-gcc-4.2' failed with exit status 1

Любая помощь или подсказка?

Ответы [ 3 ]

11 голосов
/ 09 марта 2012

К сожалению, файл pymssql setup.py (начиная с версии pymssql-2.0.0b1-dev-20111019) нуждается в небольшой помощи для правильной работы на OSX Lion.Текущий файл setup.py пытается скомпилировать / связать с некоторыми предварительно собранными библиотеками Linux FreeTDS, а также пытается связать с librt, которого нет в OSX.Кроме того, он явно ищет библиотеки FreeTDS из Fink или MacPorts, поэтому, если вы установили Homebrew (если вы используете if) или сам FreeTDS в нестандартном месте, он может не быть найден компилятором / компоновщиком.

Я создал исправленную версию setup.py здесь .Для меня это работало достаточно хорошо с сборкой FreeTDS Homebrew с использованием стандартных расположений (/ usr / local / {lib, include}), но, как всегда, YMMV.Возможно, вам придется настроить setup.py, если вы установили FreeTDS в другом месте.Обычно вы можете игнорировать предупреждения компоновщика об отсутствующих каталогах, которые могут отсутствовать в вашей системе:

ld: warning: каталог не найден для опции '-L / usr / local / lib / freetds'

Еще одно примечание: вы, вероятно, создали FreeTDS для одной архитектуры, вероятно, x86_64.По умолчанию pymssl будет сборкой с несколькими архитектурами (при условии, что вы используете систему Python 2.7.1), поэтому даже с исправленным setup.py вы увидите компоновщик, предупреждающий что-то вроде:

ld:предупреждение: игнорируя файлверсия для ссылки.Вы можете избежать предупреждения, используя ARCHFLAGS для создания сборки только для x86_64:

ARCHFLAGS = "- arch x86_64" python setup.py install

4 голосов
/ 23 октября 2012

Или попробуйте этот форк, он устанавливается без проблем:

https://github.com/blackbass1988/pymssql-macos-lion

Для установки на OS X Mavericks вам необходимо

Инструменты командной строки OS X

FreeTDS

brew install freetds

Cython

pip install cython

и, наконец, вы можете установить pymssql-macoslion

pip install git+git://github.com/blackbass1988/pymssql-macos-lion.git@master
2 голосов
/ 27 июля 2015

Просто если кто-нибудь читает это, у меня сработало следующее:

brew install freetds
sudo pip install pymssql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...