简体   繁体   English

mac - pip 安装 pymssql 错误

[英]mac - pip install pymssql error

I use Mac (OS X 10.11.5).我使用 Mac (OS X 10.11.5)。 I want to install module pymssql for python.我想为python安装模块pymssql In Terminal.app , I input sudo -H pip install pymssql , pip install pymssql , sudo pip install pymssql .Terminal.app ,我输入sudo -H pip install pymssqlpip install pymssqlsudo pip install pymssql But error occur.但是出现错误。

The directory /Users/janghyunsoo/Library/Caches/pip/http or its parent directory is not owned by the current user and the cache has been disabled.目录/Users/janghyunsoo/Library/Caches/pip/http或其父目录不属于当前用户所有,缓存已禁用。 Please check the permissions and owner of that directory.请检查该目录的权限和所有者。 If executing pip with sudo , you may want sudo 's -H flag.如果使用sudo执行pip ,您可能需要sudo-H标志。

The directory /Users/janghyunsoo/Library/Caches/pip or its parent directory is not owned by the current user and caching wheels has been disabled.目录/Users/janghyunsoo/Library/Caches/pip或其父目录不属于当前用户所有,并且缓存轮已禁用。 Check the permissions and owner of that directory.检查该目录的权限和所有者。 If executing pip with sudo , you may want sudo 's -H flag.如果使用sudo执行pip ,您可能需要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/

The top voted solution did not work for me as brew did not link the older version of freetds on its own.最高投票的解决方案对我不起作用,因为 brew 没有自己链接旧版本的 freetds。 I did this to solve the problem:我这样做是为了解决问题:

brew unlink freetds; 
brew install freetds@0.91;
brew link --force freetds@0.91

I was able to work around this by reverting to an older version of FreeTDS through Homebrew before running the pip install.在运行 pip install 之前,我能够通过 Homebrew 恢复到旧版本的 FreeTDS 来解决这个问题。

brew unlink freetds; brew install homebrew/versions/freetds091

The solution was found by andrewmwhite at: https://github.com/pymssql/pymssql/issues/432解决方案是由 andrewmwhite 在以下位置找到的: https : //github.com/pymssql/pymssql/issues/432

http://gree2.github.io/python/setup/2017/04/19/python-instal-pymssql-on-mac上逐步安装 pymssql 找到了详细而简单的答案。

  1. brew unlink freetds; brew install homebrew/core/freetds091
  2. brew link --force freetds@0.91
  3. pip install pymssql

Found a solution for pip/python2 & pip3/python3找到了 pip/python2 和 pip3/python3 的解决方案

Problem:问题:

I was Unable to get a successful build from pip3 following @siva & @himanshu workaround works for python2 but not for python3 .在@siva & @himanshu 解决方法适用于python2但不适用于python3我无法从 pip3 成功构建。

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

Your issue is not a permission issue, but, a code-compiling issue with dependent code for pymssql .您的问题不是权限问题,而是pymssql依赖代码的代码编译问题。

Here's the discussion , Where I found the Solution on github.这是讨论,我在 github 上找到解决方案的地方。

It has been around for a while at this point, just placing here for visibility.在这一点上它已经存在了一段时间,只是为了可见而放置在这里。

Just use the newest build of pymssql from gitub:只需使用来自 gitub 的最新版本的 pymssql:

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

Also works for python2也适用于 python2

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

OR

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

I Tested on Mac OS X (10.13.6) & Homebrew (1.7.1-62-gddbefee) multiple times.我在Mac OS X (10.13.6) & Homebrew (1.7.1-62-gddbefee)多次。 The command works for both versions of freetds (0.91) or (1.00.94)该命令适用于 freetds (0.91) 或 (1.00.94) 的两个版本

“brew install homebrew/python/pymssql”也可以使用,但截至今天将安装较旧的 2.1.1。

This worked for me on mac:这在 mac 上对我有用:

pip install cython

then那么

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

All the solutions above work well .以上所有解决方案都运行良好。 Just one word of caution , the setup.py for pymssql pip install pymssql expects that Homebrew has installed Freetds at /sw on your machine.提醒一句,pymssql pip install pymssql 的 setup.py 期望 Homebrew 已在您机器上的/sw安装了 Freetds。

This was not the case in my machine so I had to use the work around here :我的机器不是这种情况,所以我不得不在这里使用工作:

  1. Manually download the .tar file for pymssql手动下载 pymssql 的 .tar 文件
  2. Open setup.py打开setup.py
  3. Edit the variable fink to add the path to where ever Freetds is actually installed on your machine.编辑变量fink以将路径添加到您的计算机上实际安装 Freetds 的位置。
if sys.platform == 'darwin':
     fink = '<path to Freetds on your Machine>' 
  1. Then run python setup.py install然后运行python setup.py install

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM