pyodbc是一个非常好的东西,但是Windows安装程序只能使用非常特定的python版本。随着python 3.4的发布,唯一可用的安装程序只要在注册表中没有看到3.3就停止运行(尽管3.4当然存在)。
将.pyd和.egg信息文件从3.3安装复制到3.4站点包目录中似乎没有什么效果。导入pyodbc时,会引发importError:ImportError: DLL load failed: %1 is not a valid Win32 application.
有没有可以添加的秘密酱汁可以使3.3文件正常工作?还是我们只需要等待3.4安装程序版本?

最佳答案

python的不同版本(大多数情况下)不兼容二进制,因此任何编译的扩展(如pyodbc)都只能用于特定的版本。
请注意,不需要编译纯Python包(完全用Python编写,并且没有非Python依赖项的包),因此可以编写纯Python包来支持多个Python版本。
另外请注意,从技术上讲,编写编译的扩展是可能的,这样它就可以适用于python 3.2、3.3、3.4以及将来的3.x,但是它们必须将自己限制在由"stable ABI"指定的PEP 384范围内,并且大多数扩展都不会这样做。据我所知,pyodbc不仅限于稳定的abi,而且必须为每个Python版本分别编译。
也就是说,只要您拥有所需的工具和专业知识,就可以从源代码编译自己的pyodbc版本。(但我猜,如果你问这个问题,你不会问。我也不会问,否则我会在这个答案中加上一些提示。)
正如您已经评论过的那样,pypyodbc可能是您的最佳选择,因为它是一个纯Python包。
安装pypyodbc可以通过命令行完成:

C:\Python34\Scripts>pip install pypyodbc

使用它作为插入式替换pyodbc可以使用:
import pypyodbc as pyodbc

[在此编辑时,当前版本的pyodbc3.0.10,它确实支持python 3.4。当然,如果在将来的Python版本发布时,pypyodbc再次落后,那么了解它仍然很有用。]

关于python - Windows上的pyodbc和python 3.4,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23299034/

10-12 17:31
查看更多