有没有办法在 Windows 上的 python 2.7 64 位上使用 ibm_db?

Posted

技术标签:

【中文标题】有没有办法在 Windows 上的 python 2.7 64 位上使用 ibm_db?【英文标题】:Is there a way to use ibm_db on python 2.7 64-bit on windows? 【发布时间】:2018-01-17 00:59:19 【问题描述】:

我安装了python 2.7 32位版本,我可以运行pip install ibm_db(当前版本是2.0.8),然后调用import ibm_db,一切正常。但是,当我使用 python 2.7 64 位时,通过 pip 安装可以正常工作,但是当我尝试使用 import ibm_db 时,出现以下错误:

Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import ibm_db
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\ibm_db.py", line 10, in <module>
    __bootstrap__()
  File "C:\Python27\lib\site-packages\ibm_db.py", line 9, in __bootstrap__
    imp.load_dynamic(__name__,__file__)
ImportError: DLL load failed: %1 is not a valid Win32 application.
>>>

有问题的 DLL 是 &lt;site-packages&gt;/ibm_db_dlls/ibm_db.dll,它在那里,但是当我使用 Dependency Walker 打开它时,它似乎是 32 位版本。

有人知道是否有 64 位兼容的 ibm_db.dll,或者有办法让它工作吗?我需要它在具有 64 位 python 的环境(Windows 服务器)中运行,并且我无法控制版本。

【问题讨论】:

【参考方案1】:

将先前的评论转换为答案。

我在 64 位 Windows 8.1 工作站和 64 位 Db2 V11.1 客户端上运行 Python 2.7.14(64 位)和 ibm_db (2.0.8)。

我对上述 64 位组件的组合没有任何问题。

如果 64 位组合在工作站上运行正常,我不明白为什么如果配置正确,它也不能在 Windows-Server 上运行。

您的 Windows 服务器能否为 Python 和/或 ibm_db 提供一些 32 位和 64 位人工制品的混搭?还是一些不正确的 PATH 设置等?

注意:我使用 easy_install 来交付 ibm_db(按照 IBM 在 Db2 知识中心的说明)。

【讨论】:

谢谢!我使用easy_install 完成了这项工作。我原以为 pip 会做基本相同的事情,但通过 easy_install setup.py 实际上会检测操作系统架构并下载正确的 db2 ODBC 驱动程序。 另一个注意事项,因为我想使用 pip 离线安装所有依赖项,我首先使用 easy_install 安装了 .egg,然后使用 wheel convert 将其转换为 .whl 以便我可以安装使用需求文件中的 pip 和一堆缓存的***。现在一切正常。

以上是关于有没有办法在 Windows 上的 python 2.7 64 位上使用 ibm_db?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 上的 Python 2.6:如何使用“shell=True”参数终止 subprocess.Popen?

有没有办法在Windows上的emacs下运行MIT方案解释器?

Python/Windows 10 - 有没有办法防止 Windows 10 计算机在 Python 中进入睡眠状态?

有没有办法在 Windows 中使用 C# 以编程方式禁用磁盘驱动器上的写入缓存策略?

有没有办法让 Windows 64 位上的应用程序在 64 位和 32 位仿真层下执行代码?

Python/Kivy 应用程序到 Windows 上的 apk - 安装虚拟机后该怎么办?