导入 pymssql 时出错

Posted

技术标签:

【中文标题】导入 pymssql 时出错【英文标题】:Error importing pymssql 【发布时间】:2016-03-05 19:58:59 【问题描述】:

我正在尝试导入 pymssql,但出现此错误(我认为我已正确安装):

Traceback (most recent call last):
File "sql.py", line 1, in <module>
    import pymssql
ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymssql.so, 2): Symbol not found: _dbversion
  Referenced from: /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pymssql.so
  Expected in: dynamic lookup

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

导入时找不到符号,可能是由于运行 setup.py 时编译时出现链接问题。

我遇到了这个特殊问题,因为我在我的 OS X 机器上运行 32 位 Python 2.7.12。执行以下操作为我解决了这个问题:

确保我安装了正确版本的 FreeTDS。 Until pymssql 2.20 is released, pymssql is not compatible with FreeTDS 1.0。您可以使用brew uninstall freetdsbrew install homebrew/versions/freetds091 在 OS X 上安装 FreeTDS 0.91 确保我安装了 64 位版本的 Python 2.7.12。 This a quick way to verify if you're running python as 32 or 64 bit。我使用the python.org installer 而不是使用brew install python 确保在安装 pymssql 时不依赖 pip 缓存。相反,我使用了pip install --no-cache-dir pymssql

您需要 FreeTDS 才能成功构建,如果您没有使用正确的架构进行构建,您可能会遇到此错误。

希望这会有所帮助!

【讨论】:

2020 年更新:我认为这个解决方案不再可行:FreeTDS 0.91 is no longer available on homebrew 和 pymssql is no longer maintained, so version 2.20 will never happen。随着 pymssql 的沉没,现在真正的答案可能就是停止使用它。 卸载和安装 freetds 有帮助。 ```` brew install freetds ```

以上是关于导入 pymssql 时出错的主要内容,如果未能解决你的问题,请参考以下文章

执行使用 PyMSSQL 引用链接服务器的存储过程时出错

由于添加了奇怪的字符,运行 Pymssql.Cursor.Execute 时出错

安装pymssql时出错

在 Windows 10 上安装 pymssql 时出错

在 Mac OS X Lion 上安装 pymssql 时出错

使用 Pymssql 将数据插入 MS SQL DB 时出错