Python 如何在MacOS Sierra上安装pymssql

Python 如何在MacOS Sierra上安装pymssql,python,sql,sql-server,macos,pymssql,Python,Sql,Sql Server,Macos,Pymssql,我的错误与显示的相同。我按照页面上的说明尝试了brew安装freetds,然后是sudo-H pip安装pymssql 生成此错误代码的: 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().repl

我的错误与显示的相同。我按照页面上的说明尝试了
brew安装freetds
,然后是
sudo-H pip安装pymssql

生成此错误代码的:

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/
搜索这个错误使我想起了。我遵循上面发布的解决方案,尝试了
brew取消freetds链接;brew安装自制/versions/freetds091
brew卸载freetds;brew安装自制/versions/freetds091
,在尝试
sudo-H pip安装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/
于是我放弃了并尝试安装pyodbc,但仍然出现类似的错误:
src/pyodbc.h:56:10:致命错误:“找不到sql.h”文件
#包括sql.h

这方面的任何帮助都会很好。

最终解决了我的问题。对于其他有这些问题的人来说,这一系列命令对我来说很有效

_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/
截至2021年2月

我不能再安装了freetds@0.91因为自制软件没有。freetds的当前版本是1.2.18,brew链接--force freetds
似乎没有任何改变

找不到根问题“sqlfront.h”文件,原因是freetds文件在安装过程中链接不正确。我们可以通过这样做来解决这个问题

brew uninstall --force freetds
brew install freetds@0.91
brew link --force freetds@0.91
pip install pymssql
其中
/opt/homebrew/opt/freetds
是homebrew在您的系统上安装freetds的地方(我在Apple Silicon上),您可能会有所不同。如果您使用的是英特尔,您的手机可能看起来像
/usr/local/opt/freetds

要准确查找homebrew在您的系统上安装了freetds(或任何相关程序)的位置,您可以

export LDFLAGS="-L/opt/homebrew/opt/freetds/lib"
export CPPFLAGS="-I/opt/homebrew/opt/freetds/include"
pip install pymssql
这应该返回类似于
/opt/homebrew/opt/freetds
/opt/homebrew/opt的内容/freetds@1.2.18
。您可以忽略任何版本号并附加
/lib
/include
以获得所需的路径


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

您是否尝试过通过brew安装
unixodbc
brew安装unixodbc
)?它包含您缺少的
sql.h
。截至2018.03,上述问题仍然是一个问题。上面的步骤非常有效!非常感谢。我必须
brew链接--覆盖freetds@0.91--强制
使链接在MacOS 10.12.6上工作。
brew --prefix freetds