1

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

有什么建议么?

4

2 回答 2

3

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 答案。

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

于 2014-06-27T01:18:46.460 回答
2

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

安装最新的pip,setuptoolswheel包。然后,您可以像使用该pip wheel命令一样使用该命令pip install,但它会生成一个名为(默认情况下)的文件夹,wheelhouse其中充满了必要的、已编译的轮子,供另一个 python/pip 安装您需要的东西。

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

于 2014-06-27T01:23:20.710 回答