尝试在 Windows 上导入 pymssql 时出现“ImportError: DLL load failed”

shi*_*etz 3 python python-2.x pymssql python-3.x

我正在尝试使用这里的示例代码:

http://www.pymssql.org/en/latest/pymssql_examples.html

我使用pip. 我也在 site-packages 文件夹中看到了

C:\Python27\Lib\site-packages\pymmsql.pyd
Run Code Online (Sandbox Code Playgroud)

但是,当我执行代码时,出现以下错误:

Traceback (most recent call last):
File "C:\Android\android_workspace\pythonProject\test.py", line 2, in <module>
import pymssql
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Gor*_*son 6

更新

由于用户社区对 2.1.2 更改的负面反馈,pymssql 2.1.3 及更高版本已恢复pip install pymssql分发预编译的轮文件,这些文件静态链接到 FreeTDS,不支持 SSL。

因此,如果您需要 SSL 支持,那么您仍然不能简单地执行pip install pymssql. 对于 Windows,您需要遵循以下过程,或者对于 Linux,您需要使用类似此问题的答案中描述的过程从源代码构建 pymssql(可能还有 FreeTDS)


pymssql 的 2.1.2 版对其在 Windows 上的设置方式进行了重大更改。以前的版本是通过静态链接的FreeTDS分发的,所以我们需要做的就是安装 pymssql(例如,pip install pymssql)并且它“正常工作”,但不支持 SSL 连接。

从 pymssql 2.1.2 版开始,pymssql与 Windows 上的FreeTDS动态链接,并且不附带 FreeTDS(和 OpenSSL,如果需要)的必需组件。我们仍然可以使用 安装 pymssql 本身pip install pymssql,但这可能已经不够了。如果我们还没有在 Windows 机器上安装 FreeTDS,那么我们必须自己下载组件。

下载链接可以在 pymssql 文档页面上找到:

pymssql-Docs-FreeTDS-安装-Windows

如果SSL连接并不需要那么我们只需要下载freetds的组件,并确保“LIB-nossl”文件夹中的内容可以通过搜索窗口中找不到PATH

如果需要 SSL 连接那么我们必须下载 FreeTDS 和 OpenSSL 组件并确保可以找到适当的 DLL(在 FreeTDS 的“lib”文件夹中,以及 OpenSSL 的“bin”或“bin64”文件夹中)通过搜索 Windows PATH.

请注意,这些更改会影响 pymssql 的新安装和升级。据报道,简单地将 pymssql 从 2.1.1 版升级到 2.1.2 版将破坏 Windows 上的 pymssql,直到下载 FreeTDS(和 OpenSSL,如果需要)所需的组件。