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

Python 如何在不创建virtualenv的情况下pip安装用Pipfile编写的软件包?,python,docker,pip,pipfile,Python,Docker,Pip,Pipfile,我创建了一个包,包含,我想用docker进行测试 我想用pip安装用Pipfile编写的包,而不创建virutalenv # (do something to create some-file) RUN pip install (some-file) 怎么做?最终pip应该能够自己做到这一点,至少他们是这么说的。目前,这还没有实施 目前,pip文件是TOML文件,因此您可以使用TOML解析器提取包约束,并以pip可以识别的格式发出它们。例如,如果您的pip文件只包含简单的字符串版本说明符,那么

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


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

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

怎么做?

最终pip应该能够自己做到这一点,至少他们是这么说的。目前,这还没有实施

目前,pip文件是TOML文件,因此您可以使用TOML解析器提取包约束,并以pip可以识别的格式发出它们。例如,如果您的pip文件只包含简单的字符串版本说明符,那么这个小脚本将写出一个
requirements.txt
文件,然后您可以将该文件传递到
pip安装-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}')
如果PIP文件包含更复杂的结构,则必须编辑此代码来解释它们


一个可以考虑的适合于DoCKER容器的替代方案是使用 PiPNV将包安装到系统Python安装中,然后只删除生成的虚拟环境。

pipenv install --system
pipenv --rm

但是,严格来说,如果不创建VirtualNV,这并不能实现您的既定目标。

与使用venv一样,只需使用本地安装pip。确保系统中有pip可用,然后直接运行它。。。请注意,pip不会为您安装系统的依赖项。我想安装用PIPFile编写的软件包PIPFile只是“requirements.txt”的替代品。因此,我认为您可以使用类似的方法
运行pip安装-p
。很抱歉,目前
pip
还不支持
pipfile
。您必须使用
pipenv安装
我不确定是否需要删除虚拟环境。在这个阶段,似乎没有创建任何项目<代码>尚未为此项目创建virtualenv嗯,我似乎记得当我尝试它的时候,一个virtualenv被创建了。也许这在最近的版本中有所改变。我将重新设置它,并尝试在编辑中进行澄清。