我创建了一个包含Pipfile的包,我想用docker进行测试。
我想安装用Pipfile编写的软件包,不需要创建virutalenv。
# (do something to create some-file)
RUN pip install (some-file)怎么做?
发布于 2020-12-06 08:43:13
最终,pip应该能够自己做到这一点,至少他们是这么说的。目前,这一规定尚未落实。
现在,Pipfile是TOML文件,因此您可以使用TOML解析器提取包约束并以pip将识别的格式发出它们。例如,如果pass文件只包含简单的字符串版本说明符,这个小脚本将写出一个requirements.txt文件,然后可以传递给pip install -r
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容器。
pipenv install --system
pipenv --rm但是,严格地说,如果不创建一个虚拟环境,就无法实现所述的目标。
发布于 2021-09-26 14:45:32
另一个答案让我明白了这一点,但想要明确地指出这一点,以及为什么它是一个有用的解决方案。
Pipenv非常有用,因为它可以帮助您创建一个虚拟环境。这在您的本地开发机器上是很棒的,因为您通常会有许多项目,有不同的依赖项等等。
在CICD中,您将使用通常只旋转几分钟的容器来完成CICD管道的一部分。因为您将在每次运行管道时创建一个新容器,因此不需要在容器中创建一个虚拟环境来保持事情的组织性。您可以简单地将所有依赖项直接安装到python的主要OS版本。
为此,在CICD管道中运行以下命令:
pipenv install --system
https://stackoverflow.com/questions/54995003
复制相似问题