【问题标题】:How to install pymssql on MacOS Sierra如何在 MacOS Sierra 上安装 pymssql
【发布时间】:2017-12-11 00:42:21
【问题描述】:
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-J1I0ox/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-qmtdBW-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-build-J1I0ox/pymssql/

我遇到了与显示的 here 相同的错误。我按照该页面上的说明尝试brew install freetds,然后尝试sudo -H pip install pymssql

生成此错误代码:

    _mssql.c:18814:15: error: use of undeclared identifier 'DBVERSION_80'
    __pyx_r = DBVERSION_80;
              ^
4 warnings and 1 error generated.
error: command 'cc' failed with exit status 1

----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/tmp/pip-build-J1I0ox/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-qmtdBW-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/tmp/pip-build-J1I0ox/pymssql/

搜索此错误将我带到 this page。我按照那里发布的解决方案尝试了 brew unlink freetds; brew install homebrew/versions/freetds091 brew uninstall freetds; brew install homebrew/versions/freetds091,这在尝试 sudo -H pip install pymssql 时会产生不同的错误:

_mssql.c:266:10: fatal error: 'sqlfront.h' file not found
#include "sqlfront.h"
         ^
1 error generated.
error: command 'cc' failed with exit status 1

----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/_s/27xppw4j3yl78c9l4v1w3n9m0000gn/T/pip-build-97A9sQ/pymssql/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /var/folders/_s/27xppw4j3yl78c9l4v1w3n9m0000gn/T/pip-0nUZo4-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/_s/27xppw4j3yl78c9l4v1w3n9m0000gn/T/pip-build-97A9sQ/pymssql/

于是我放弃并尝试安装pyodbc,但我仍然收到类似的错误: src/pyodbc.h:56:10: fatal error: 'sql.h' file not found #include sql.h

对此的任何帮助都会很棒。

【问题讨论】:

  • 您是否尝试通过 brew (brew install unixodbc) 安装 unixodbc?它包含您丢失的sql.h

标签: python sql sql-server macos pymssql


【解决方案1】:

This link 最终解决了我的问题。对于遇到这些问题的其他人,这一系列命令对我有用。

brew uninstall --force freetds
brew install freetds@0.91
brew link --force freetds@0.91
pip install pymssql

【讨论】:

  • 上述问题截至2018.03仍然存在问题。上面的步骤效果很好!谢谢!
  • 我必须 brew link --overwrite freetds@0.91 --force 才能使链接在 MacOS 10.12.6 上正常工作。
【解决方案2】:

截至 2021 年 2 月

我无法再安装 freetds@0.91,因为 homebrew 没有它可用。 freetds 的当前版本是 1.2.18,brew link --force freetds 似乎没有任何改变。

根本问题'sqlfront.h' file not found 是由于freetds 文件在安装过程中没有正确链接。我们可以通过这样做来解决这个问题

export LDFLAGS="-L/opt/homebrew/opt/freetds/lib"
export CPPFLAGS="-I/opt/homebrew/opt/freetds/include"
pip install pymssql

/opt/homebrew/opt/freetds 是 homebrew 在您的系统上安装 freetds 的位置(我在 Apple Silicon 上),您可能会有所不同。如果您使用 Intel,您的可能看起来像 /usr/local/opt/freetds

要找到 homebrew 在您的系统上安装 freetds(或任何程序)的确切位置,您可以这样做

brew --prefix freetds

这应该返回类似/opt/homebrew/opt/freetds/opt/homebrew/opt/freetds@1.2.18 的内容。您可以忽略任何版本号并附加/lib/include 以获取您需要的路径。

这是一个需要牢记的方便技巧,因为它适用于通过自制软件安装依赖项的许多其他安装问题。

【讨论】:

    猜你喜欢
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2018-03-06
    • 2016-12-12
    • 2023-03-15
    • 2018-12-08
    相关资源
    最近更新 更多