Подтвердить что ты не робот

Mac - pip установить ошибку pymssql

Я использую Mac (OS X 10.11.5). Я хочу установить модуль pymssql для python. В Terminal.app введите sudo -H pip install pymssql, pip install pymssql, sudo pip install pymssql. Но ошибка возникает.

Каталог /Users/janghyunsoo/Library/Caches/pip/http или его родительский каталог не принадлежит текущему пользователю, и кеш отключен. Проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вам может понадобиться флаг sudo -H.

Каталог /Users/janghyunsoo/Library/Caches/pip или его родительский каталог не принадлежит текущему пользователю, а кеширующие колеса отключены. Проверьте разрешения и владельца этого каталога. Если вы выполняете pip с помощью sudo, вам может понадобиться флаг sudo -H.

Collecting pymssql
  Downloading pymssql-2.1.2.tar.gz (898kB)
    100% |████████████████████████████████| 901kB 955kB/s 
Installing collected packages: pymssql
  Running setup.py install for pymssql ... error
    Complete output from command /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-KA5ksi/pymssql/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-A3wRBy-record/install-record.txt --single-version-externally-managed --compile:
    setup.py: platform.system() => 'Darwin'
    setup.py: platform.architecture() => ('64bit', '')
    setup.py: platform.libc_ver() => ('', '')
    setup.py: Detected Darwin/Mac OS X.
        You can install FreeTDS with Homebrew or MacPorts, or by downloading
        and compiling it yourself.

        Homebrew (http://brew.sh/)
        --------------------------
        brew install freetds

        MacPorts (http://www.macports.org/)
        -----------------------------------
        sudo port install freetds

    setup.py: Not using bundled FreeTDS
    setup.py: include_dirs = ['/usr/local/include', '/opt/local/include', '/opt/local/include/freetds']
    setup.py: library_dirs = ['/usr/local/lib', '/opt/local/lib']
    running install
    running build
    running build_ext
    building '_mssql' extension
    creating build
    creating build/temp.macosx-10.6-intel-2.7
    /usr/bin/clang -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -g -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/opt/local/include -I/opt/local/include/freetds -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mssql.c -o build/temp.macosx-10.6-intel-2.7/_mssql.o -DMSDBLIB
    _mssql.c:18924:15: error: use of undeclared identifier 'DBVERSION_80'
        __pyx_r = DBVERSION_80;
                  ^
    1 error generated.
    error: command '/usr/bin/clang' failed with exit status 1

    ----------------------------------------
Command "/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-KA5ksi/pymssql/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-A3wRBy-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-build-KA5ksi/pymssql/
4b9b3361

Ответ 1

Мне удалось обойти это, вернувшись к старой версии FreeTDS через Homebrew, прежде чем запускать установку pip.

brew unlink freetds; brew install homebrew/versions/freetds091

Решение было найдено andrewmwhite по адресу: https://github.com/pymssql/pymssql/issues/432

Ответ 2

Топ-голосовое решение не сработало для меня, поскольку brew не связал старую версию freetds самостоятельно. Я сделал это, чтобы решить проблему:

brew unlink freetds; 
brew install [email protected];
brew link --force [email protected]

Ответ 4

Найден решение для pip/python2 & pip3/python3

Проблема:

Я был неспособен получить успешную сборку из pip3 после обходных решений @siva & @himanshu для python2 но не для python3.

pip3 install pymssql

    ..._mssql.c:21155:15: error: use of undeclared identifier 'DBVERSION_80'
        __pyx_r = DBVERSION_80;
                  ^
    1 error generated.
    error: command 'clang' failed with exit status 1

Ваша проблема не является проблемой разрешения, но проблема с компиляцией кода с зависимым кодом для pymssql.

Здесь обсуждение, где я нашел решение на github.

На данный момент это было какое-то время, просто размещая здесь для видимости.

Просто используйте новейшую сборку pymssql из gitub:

    pip3 install git+https://github.com/pymssql/pymssql

Также работает для python2

    pip install git+https://github.com/pymssql/pymssql

ИЛИ ЖЕ

    pip2 install git+https://github.com/pymssql/pymssql

Я несколько раз тестировал Mac OS X (10.13.6) & Homebrew (1.7.1-62-gddbefee). Команда работает для обеих версий freetds (0.91) или (1.00.94)

Ответ 5

"brew установить homebrew/python/pymssql" также работал, но на сегодняшний день будет установлено более старое 2.1.1.

Ответ 6

Это сработало для меня на mac:

pip install cython

затем

pip install git+https://github.com/pymssql/pymssql.git

Ответ 7

Все вышеперечисленные решения работают хорошо. Всего лишь одно предостережение, файл setup.py для pymssql pip install pymssql ожидает, что Homebrew установил Freetds на /sw

if sys.platform == 'darwin':
    fink = '/sw'

Это было не так в моей машине, поэтому мне пришлось использовать работу здесь:

  1. Вручную загрузите файл .tar для pymssql
  2. измените это в файле setup.py, чтобы указать fink на местоположение freetds
  3. Затем запустите python setup.py install