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

时间:2019-03-05 03:30:36

标签: python docker pip pipfile

我创建了一个包含Pipfile的程序包,并想在docker上进行测试。

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

# (do something to create some-file)
RUN pip install (some-file)

怎么办?

1 个答案:

答案 0 :(得分:1)

最终,点子应该能够做到这一点,至少他们是这样说的。目前,尚未实现。

目前,Pipfile是TOML文件,因此您可以使用TOML解析器提取程序包约束,并以pip可以识别的格式发出约束。例如,如果您的Pipfile仅包含简单的字符串版本说明符,则此小脚本将写出一个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包含更复杂的结构,则必须编辑此代码以解决它们。


您可能考虑的一种适用于Docker容器的替代方法是使用pipenv将软件包安装到系统Python安装中,然后仅删除生成的虚拟环境。

pipenv install --system
pipenv --rm

但是,严格来说,如果不创建virtualenv,就无法实现您设定的目标。

相关问题