加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用依赖项打包python项目的标准方法是什么?

发布时间:2020-12-14 04:54:23 所属栏目:百科 来源:网络整理
导读:我有一个 python项目,有一些依赖项(在setup.py中的install_requires下定义).我的操作人员需要一个自包含的包,只依赖于python安装.石蕊测试将是他们能够获得一个zip文件然后解压缩并运行它而无需连接互联网. 是否有一种简单的方法来打包包含依赖项的安装?如
我有一个 python项目,有一些依赖项(在setup.py中的install_requires下定义).我的操作人员需要一个自包含的包,只依赖于python安装.石蕊测试将是他们能够获得一个zip文件然后解压缩并运行它而无需连接互联网.

是否有一种简单的方法来打包包含依赖项的安装?如果我必须构建最终将运行的OS /体系结构,这是可以接受的.

为了它的价值,我已经尝试了setup.py build和setup.py sdist,但它们似乎不符合要求,因为它们不包含依赖项.我也考虑过virtualenv(如果绝对必要的话可以安装),但它有硬编码路径,这使得它不太理想.

解决方法

pip如何工作有一些细微差别.不幸的是,如果将任何依赖项或依赖项的依赖项安装到pip可以找到它们的地方,使用–prefix vendor来存储项目的所有依赖项都不起作用.它将跳过这些依赖项,并将其余部分安装到您的供应商文件夹中.

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

我将提供一个示例脚本,用于创建临时virtualenv,激活它,然后将依赖项安装到本地供应商文件夹.如果您在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读