首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不创建virtualenv的情况下安装用Pipfile编写的包?

如何在不创建virtualenv的情况下安装用Pipfile编写的包?
EN

Stack Overflow用户
提问于 2019-03-05 03:30:36
回答 2查看 6K关注 0票数 7

我创建了一个包含Pipfile的包,我想用docker进行测试。

我想安装用Pipfile编写的软件包,不需要创建virutalenv。

代码语言:javascript
复制
# (do something to create some-file)
RUN pip install (some-file)

怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-06 08:43:13

最终,pip应该能够自己做到这一点,至少他们是这么说的。目前,这一规定尚未落实。

现在,Pipfile是TOML文件,因此您可以使用TOML解析器提取包约束并以pip将识别的格式发出它们。例如,如果pass文件只包含简单的字符串版本说明符,这个小脚本将写出一个requirements.txt文件,然后可以传递给pip install -r

代码语言:javascript
复制
import sys
import toml

with open(sys.argv[1]) as f:
    result = toml.load(f)
for package, constraint in result['packages'].items():
    if constraint == '*':
        print(package)
    else:
        print(f'{package} {constraint}')

如果Pipfile包含更复杂的构造,则必须编辑这段代码来解释它们。

您可能考虑的另一种选择是使用pipenv将包安装到system安装中,然后删除生成的虚拟环境,这适合于Docker容器。

代码语言:javascript
复制
pipenv install --system
pipenv --rm

但是,严格地说,如果不创建一个虚拟环境,就无法实现所述的目标。

票数 4
EN

Stack Overflow用户

发布于 2021-09-26 14:45:32

另一个答案让我明白了这一点,但想要明确地指出这一点,以及为什么它是一个有用的解决方案。

Pipenv非常有用,因为它可以帮助您创建一个虚拟环境。这在您的本地开发机器上是很棒的,因为您通常会有许多项目,有不同的依赖项等等。

在CICD中,您将使用通常只旋转几分钟的容器来完成CICD管道的一部分。因为您将在每次运行管道时创建一个新容器,因此不需要在容器中创建一个虚拟环境来保持事情的组织性。您可以简单地将所有依赖项直接安装到python的主要OS版本。

为此,在CICD管道中运行以下命令:

pipenv install --system

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54995003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档