在 Windows 上部署 Python 包,编译依赖项,而不安装 Visual Studio?

Posted

技术标签:

【中文标题】在 Windows 上部署 Python 包,编译依赖项,而不安装 Visual Studio?【英文标题】:Deploy Python package on Windows, that compiles dependencies, without installing Visual Studio? 【发布时间】:2014-08-18 00:20:04 【问题描述】:

如果需要编译某些依赖项,将 Python 包部署到 Windows Server 的最佳方法是什么?安装 Visual Studio 是不可能的,我不愿意在每次需要更新时传递一个 250MB 的文件。 pip install -r requirements.txt 是目标。

有什么建议吗?

【问题讨论】:

【参考方案1】:

easy_install - 允许从 exe 安装

easy_install 确实从 exe 安装程序安装,如果它们可用的话。 pip 不会从 exe 安装,因此对于 C/C++ 包,easy_install 通常是安装方式。

pip 安装二进制文件

pip 支持从wheel 格式安装。

如果您在 pypi 或您使用的其他索引服务器上有***,请允许 pip 使用*** (--use-wheels)。最新版pip默认使用滚轮格式,旧版本需要设置--use-wheel开关。

造***

您可以构建(编译)***,也可以将鸡蛋或 exe 安装程序转换为***。

为此,请使用wheel 命令。

轮式服务包

某些包(例如lxml)在 pypi 服务器上不提供***。如果你想使用它们,你必须管理你自己的索引。最简单的一种是使用专用目录和pip 配置--find-links 指向那里。

有关更多提示和详细信息,请参阅SO answer to caching packages。

非常好的替代方案是devpi 索引服务器,它易于设置,具有非常好的工作流程,并且可以很好地与您的 pip 集成。

【讨论】:

谢谢,这正是我所缺少的。 在简单的情况下,您可以使用--find-links 标志而不是专用的pypi服务器:) @Ivo 是的,我添加了对相关 SO 答案的引用 ***.com/a/18520729/346478【参考方案2】:

使用一次编译、多次部署的策略可能会有所帮助,同时使用 Python 最新的包分发格式 wheels。它们是一种已经编译的二进制格式。所以需求只是一个开发/构建平台,与部署平台相似/运行相同的python(后者不再需要构建链)。

安装最新的pipsetuptoolswheel 软件包。然后,您可以像使用 pip install 一样使用 pip wheel 命令,但它会生成一个名为(默认情况下)wheelhouse 的文件夹,其中包含必要的、已编译的***,用于另一个 python/pip 来安装您需要的东西.

然后您可以将这些***文件路径直接传递给pip install 命令(例如在您的部署机器上),或者使用带有--no-index --find-links= 标志的普通包名称指向这些***所在的文件夹位置。这个位置也可以是一个简单的 http 文件夹 - for example。

【讨论】:

很好,我没听说过wheels,似乎是门票。

以上是关于在 Windows 上部署 Python 包,编译依赖项,而不安装 Visual Studio?的主要内容,如果未能解决你的问题,请参考以下文章

如何用Nginx部署Django

xgboost python windows编译问题

Windows 上的 Python - 编译

maven在本地编译没有问题。到服务器上部署就会报错 ,这个类有在 Pom.xml配了,但还是提示找不到。

Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件

windows+jenkins+gitlab+python配置