gpt4 book ai didi

python - 打包带有依赖项的 python 项目的标准方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:41:49 30 4
gpt4 key购买 nike

我有一个 python 项目,它有一些依赖项(在 setup.py 的 install_requires 下定义)。我的操作人员需要一个包是自包含的,并且只依赖于 python 安装。试金石是他们能够获取一个 zip 文件,然后在没有互联网连接的情况下解压缩并运行它。

有没有一种简单的方法来打包包含依赖项的安装?如果我必须在最终将在其上运行的操作系统/架构上进行构建,这是可以接受的。

就其值(value)而言,我已经尝试了 setup.py buildsetup.py sdist,但它们似乎不符合要求,因为它们符合要求不包括依赖项。我还考虑过 virtualenv(如果绝对必要,可以安装),但它具有硬编码路径,因此不太理想。

最佳答案

pip 的工作方式有一些细微差别。不幸的是,如果这些依赖项中的任何一个或依赖项的依赖项安装在 pip 可以找到它们的位置,则使用 --prefix vendor 来存储项目的所有依赖项将不起作用。它将跳过这些依赖项,只将其余部分安装到您的 vendor 文件夹中。

过去我使用 virtualenv 的 --no-site-packages 选项来解决这个问题。在一家公司,我们会发布整个 virtualenv,其中包括 python 二进制文件。为了只运送依赖项,您可以结合使用 virtualenv 和 pip 上的 --prefix 开关,为自己提供一个安装到正确位置的干净环境。

我将提供一个示例脚本来创建一个临时的 virtualenv,激活它,然后将依赖项安装到本地 vendor 文件夹。如果您在 CI 中运行,这会很方便。

#!/bin/bash

tempdir=$(mktemp -d -t project.XXX) # create a temporary directory
trap "rm -rf $tempdir" EXIT # ensure it is cleaned up
# create the virtualenv and exclude packages outside of it
virtualenv --python=$(which python2.7) --no-site-packages $tempdir/venv
# activate the virtualenv
source $tempdir/venv/bin/activate
# install the dependencies as above
pip install -r requirements.txt --prefix=vendor

关于python - 打包带有依赖项的 python 项目的标准方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243682/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com