带有 python 3 的 Python 2 模块

Posted

技术标签:

【中文标题】带有 python 3 的 Python 2 模块【英文标题】:Python 2 modules with python 3 【发布时间】:2017-06-26 00:59:44 【问题描述】:

我想在 python 3 环境中使用 informixdb 2.5,它是一个符合 DB-API 2.0 的模块。我的电脑同时安装了 python 2.6 和 python 3.6。我为我的代码创建了一个新的 virtualenv。

我在 2.6 环境中使用 pip install for informixdb 并对其进行了测试,一切正常。

我不知道如何在我的 3.5 virtualenv 中引用 2.6 版本的模块。

我尝试使用 pip-install 将其加载到 3.5 环境中,但失败了(其中包含代码“(34*3600L)”,因此显然不兼容 python 3)。

我从 sourceforge 下载了源代码并尝试编译它,但也失败了(定位正确的 python 头文件时出错)。

我在挣扎。有谁知道: a)有python 3版本的模块(以及在哪里) 或者 b)这是否可能(以及如何) 或者 c)我是不是完全疯了,有更好的解决方案来访问informix数据库而不是通过这个模块(我想使用pyodbc,但认为如果有一个特定的模块,它会比使用通用的odbc函数更好)。

非常感谢,

【问题讨论】:

一般来说,如果您要求的是 Python 2 模块和 Python 3 解释器,您不应该期望能够使用它。 【参考方案1】:

如果我理解正确,您正在尝试使用这个库: informixdb 2.5

这个库老了,不支持python3。

如果您需要使用 IBM Informix db 在 python3 中工作,您可以尝试另一个名为 python-ibmdb 的库,可从此处获取:python-ibmdb

希望这会有所帮助。

【讨论】:

我认为这是正确的答案,但经过两天的努力,我无法让它发挥作用。我在 Centos 6.8 上运行带有 informix 12.1 的 python 3.6。一切都在同一台机器上。我已经加载了 informix 客户端 SDK。我已经安装了 ibm 数据服务器包。 一周后我终于成功了。它没有很好的记录。答案是您需要在您的 sqlhosts 文件中为 drsoctcp 创建一个新条目,并在您的数据库配置文件中使用一个新的端口号和一个新的匹配服务器别名。安装 IBM Data Server Package(即非 python)并确保它的包含目录位于 LD_LIBRARY_PATH 中。然后你可以安装 python-imdb。完成后,您可以使用如下连接字符串:DATABASE=xxx;UID=xxxx;HOST= ;PROTOCOL=tcpip;PORT=;PWD=xxxxx;【参考方案2】:

如果两个版本都可以使用该模块,则需要使用 python3-pip 为 python3 安装该模块

sudo apt-get install python3-pip

然后用python3-pip install module_name安装模块

【讨论】:

【参考方案3】:

您可以尝试使用 PythonIfxDB (https://github.com/ifxdb/PythonIfxDB)。 应该与 2.6 和 3.5 一起编译和“工作”

【讨论】:

非常感谢您的建议。该软件包看起来令人鼓舞,并且是最近的。不幸的是,该构建仅适用于 Windows。目前没有 linux 构建(这是我正在使用的 paltform) 我还没有完全测试过。但我可以在我的 Linux 机器上构建它,它可以很好地连接到我的 IDS 服务器。但是,它可能需要一些注意,并且一些测试失败了(并且没有为 3.x 做好准备)。 Linux 构建指令/设置是管道中的下一件事;) 如果您参与了 PythonIfxDB 的开发,您可能应该在回答中尽可能多地说明——全面披露等等。

以上是关于带有 python 3 的 Python 2 模块的主要内容,如果未能解决你的问题,请参考以下文章

带有 c 模块的 Python 的性能

在 Windows 上使用带有 Python 3.4 的 ImageScanner 模块

如何在 Ubuntu 16.04 上将 FTS5 扩展与带有 Python 3.7 的 sqlite3 python 模块一起使用?

Python import模块

Python中常用的模块

Python模块