无法在 Mac 上使用 pip 安装 pymssql 并链接到使用 fink 安装的 FreeTDS

Posted

技术标签:

【中文标题】无法在 Mac 上使用 pip 安装 pymssql 并链接到使用 fink 安装的 FreeTDS【英文标题】:Failed to install pymssql using pip and linking to FreeTDS installed using fink on a Mac 【发布时间】:2017-11-18 02:00:14 【问题描述】:

我在 iMac 上运行 MacOS 10.11.6 (El Capitan)。我已经建立了一个 Python 3.4.7 虚拟环境,并且我已经 pip (9.0.1) 安装了各种包,包括 numpy、pandas、scipy 等。但是,我在使用安装 pymssql 时遇到了困难。我知道我需要先安装 FreeTDS,并且我已经使用 fink(安装了 freetds 版本 0.91-5)完成了安装。但是,当我激活虚拟环境并运行时:

pip install pymssql

我收到以下错误消息(为它的大小道歉):

Collecting pymssql
  Using cached pymssql-2.1.3.tar.gz
    Complete output from command python setup.py egg_info:
    Download error on https://pypi.python.org/simple/setuptools_git/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) -- Some packages may not be found!
    Download error on https://pypi.python.org/simple/setuptools-git/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) -- Some packages may not be found!
    Couldn't find index page for 'setuptools_git' (maybe misspelled?)
    Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) -- Some packages may not be found!
    No local packages or working download links found for setuptools_git
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/75/qtnqhywh8xj9760059b8dbd80000gq/T/pip-build-pyxahulz/pymssql/setup.py", line 477, in <module>
        ext_modules = ext_modules(),
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/setuptools/__init__.py", line 128, in setup
        _install_setup_requires(attrs)
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/setuptools/__init__.py", line 123, in _install_setup_requires
        dist.fetch_build_eggs(dist.setup_requires)
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/setuptools/dist.py", line 453, in fetch_build_eggs
        replace_conflicting=True,
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/pkg_resources/__init__.py", line 866, in resolve
        replace_conflicting=replace_conflicting
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/pkg_resources/__init__.py", line 1146, in best_match
        return self.obtain(req, installer)
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/pkg_resources/__init__.py", line 1158, in obtain
        return installer(requirement)
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/setuptools/dist.py", line 520, in fetch_build_egg
        return cmd.easy_install(req)
      File "/Users/xyz/Documents/python_projects/general_python34_projects/env34/lib/python3.4/site-packages/setuptools/command/easy_install.py", line 666, in easy_install
        raise DistutilsError(msg)
    distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse('setuptools_git')
    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 = ['/sw/include']
    setup.py: library_dirs = ['/usr/local/lib', '/sw/lib', '/opt/local/lib']

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/75/qtnqhywh8xj9760059b8dbd80000gq/T/pip-build-pyxahulz/pymssql/

在线说明描述了使用 Homebrew 安装 FreeTDS 但我一直使用 fink 并且不想与两个系统安装的代码造成冲突。

我已经更新了 fink 和 pip,并且我已经安装了最新的 setuptools。

我试过跑步:

pip install --global-option=build_ext --global-option="-L/sw/lib" --global-option="-I/sw/include" pymssql

...但没有运气。

我已经尝试安装早期版本的 pymssql:

pip install pymssql==2.1.1

再一次,没有快乐。

或者错误输出开头的“证书验证失败”注释是密钥?

我确定我以前在其他机器上安装过 MSSQL,但我不记得有问题。我也不记得我做了什么不同(如果有的话)。

谁能帮我解决这个问题,拜托。

【问题讨论】:

【参考方案1】:

原来的虚拟环境是使用 Python 3.4.7 创建的,并且是使用 fink 安装的。

我最终删除了这个虚拟环境,并使用从 python.org 下载的 python 3.4.4 重新创建了一个新的虚拟环境。软件包被重新安装(使用 pip freeze)并且 pymssql 安装完全没有问题。

所以,虽然我仍然不知道是什么导致了原来的问题,但至少我现在有了一个工作环境。

【讨论】:

以上是关于无法在 Mac 上使用 pip 安装 pymssql 并链接到使用 fink 安装的 FreeTDS的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac 上使用 pip 安装 pymssql 并链接到使用 fink 安装的 FreeTDS

我无法在 Mac 上使用 Python3 安装 Psycopg2。我已经安装了 Python3 和 pip3

使用 pip 安装鼻子,但 bash 无法识别 mac 上的命令

在Mac上无法安装python软件包

如何修复 pip3 mac

在 Mac OS X 上使用 pip 安装 pyopencv