我创建了一个包含Pipfile的程序包,并想在docker上进行测试。
我想用pip安装用Pipfile编写的软件包,而不创建virutalenv。
# (do something to create some-file)
RUN pip install (some-file)
怎么办?
答案 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,就无法实现您设定的目标。