为 CentOS 的 pymssql 创建独立的安装文件

为 CentOS 的 pymssql 创建独立的安装文件

我正在尝试在一台机器上部署一个 Python 应用程序,但由于系统和组织要求而无法在其上安装,因此我需要为(通常需要和) gcc创建一个独立的安装文件。pymssqlFreeTDSgcc gcc-c++

我已经设法通过使用before install来摆脱该FreeTDS要求,但它仍然无法满足要求。
export PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1pymssqlgcc

有没有什么方法可以预编译,以便可以将其部署和安装在不依赖于或 的pymssql计算机上?FreeTDSgcc

答案1

我假设您使用的是 CentOS 系统 Python,因为如果无法访问gcc.

设置一个具有完全相同的 CentOS 版本的 VM(例如在 VirtualBox 中),托管在不同的计算机上。在该虚拟机中安装所需的gcc,然后安装virtualenv(我建议从源代码开始执行此操作,您可以使用包管理器安装的那个通常已经过时)。

在虚拟机上,创建一个虚拟环境,例如使用virtualenv /opt/util/pymssql,该虚拟环境将引用真正的 python,但由于您要将其移动到等效的 CentOS,所以没问题。

激活环境 ( source /opt/util/pymssql/bin/activate) 并用于pip安装您需要的所有库。

当所有内容都安装并运行后,将tar/opt/util/pymssql及其子目录放在“真正的”CentOS 机器上在同一位置。这应该可以为您提供在“真实”机器上无需编译器即可工作的代码。

虚拟环境的实际目录(在示例中/opt/util/pymssql)并不重要,但您必须使用将在“真实”机器上使用的路径,虚拟环境中的某些文件将具有硬编码的路径。

答案2

正确的方法是构建您自己的 CentOS 软件包。看起来曾经有一个 pymssql 包,但由于缺乏维护者而被放弃,但您可以使用 Fedora 的 git 存储库中的规范文件作为起点:

http://pkgs.fedoraproject.org/cgit/rpms/pymssql.git/tree/pymssql.spec

答案3

按照 Anthon 的建议,使用相同的操作系统设置 VM 并安装所需的工具(gcc),但不是创建和压缩 virtualenv(这是一种 hack),而是构建二进制轮并将该轮安装在目标系统中。

有关的:
如何避免使用我的 python 包构建 C 库?
为 python 项目构建一个wheel/egg以及所有依赖项

相关内容