pyodbc 是一个非常好的东西,但是 Windows 安装程序仅适用于其非常特定的 python 版本。随着 Python 3.4 的发布,唯一可用的安装程序一旦在注册表中看不到 3.3(尽管 3.4 肯定存在),就会停止。
将 .pyd 和 .egg-info 文件从 3.3 安装复制到 3.4 site-packages 目录似乎不起作用。导入pyodbc时,抛出ImportError:ImportError: DLL load failed: %1 is not a valid Win32 application.
是否有可以添加的秘密武器以使 3.3 文件正常工作?或者我们只需要等待 3.4 安装程序版本?
Python 的不同版本(在大多数情况下)不兼容二进制,因此任何编译的扩展(例如 pyodbc)仅适用于特定版本。
请注意,纯 Python 包(完全用 Python 编写的包,没有非 Python 依赖项)不需要编译,因此可以编写为支持多个 Python 版本。
另请注意,它是技术上可行编写一个编译扩展,使其适用于 Python 3.2 以及 3.3、3.4 和未来的 3.x,但它们必须将自己限制在“稳定的ABI” https://docs.python.org/3/c-api/stable.html指定为PEP 384 http://www.python.org/dev/peps/pep-0384/,并且大多数扩展不会这样做。据我所知,pyodbc不限于稳定的ABI,必须针对每个Python版本单独编译。
也就是说,只要您拥有所需的工具和专业知识,也可以从源代码编译您自己的 pyodbc 版本。 (但我猜如果你问这个问题,你就不会。我也不会,否则我会在这个答案中包含一些提示。)
正如您已经评论过的那样,pypyodbc https://pypi.python.org/pypi/pypyodbc可能是你最好的选择,因为它是一个纯 Python 包。
可以通过命令行安装 pyodbc:
C:\Python34\Scripts>pip install pypyodbc
可以使用它作为 pyodbc 的直接替代品:
import pypyodbc as pyodbc
[当前版本pyodbc
在进行此编辑时是3.0.10 https://pypi.python.org/pypi/pyodbc/3.0.10,并且它确实支持Python 3.4。当然,了解一下还是很有用的pypyodbc
以防万一pyodbc
当 Python 的未来版本发布时,再次落后。]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)