python - 如何在不创建 virtualenv 的情况下 pip 安装用 Pipfile 编写的包?
问题描述
我创建了一个包含Pipfile的包,我想用 docker 进行测试。
我想用 pip 安装用 Pipfile 编写的包,而不创建virutalenv。
# (do something to create some-file)
RUN pip install (some-file)
怎么做?
解决方案
最终 pip 应该能够自己做到这一点,至少他们是这么说的。目前,这尚未实施。
目前,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,就无法实现您的既定目标。
推荐阅读
- git - 有没有办法将多个测试分支名称与 AWS ALB 目标组联系起来?
- linux - 如何为 Linux (Arch) 手动安装旧版本的 unity (2019)
- scala - Akka Stream 源队列:如何限制在具有背压的队列中的插入(来自可遍历的接口)
- javascript - 处理 Snowflake 中调用多个存储过程的异常
- reactjs - 如何使用 reactjs 启用滚动条?
- google-apps-script - 我们如何使用应用程序脚本控制台将多个键和值添加到谷歌驱动器文件?
- python - python:以不同的方式将相同的值分配给列表时得到不同的结果
- latex - 删除乳胶中的随机分页符
- r - 计算一个data.frame中某些行的总和
- java - JavaFX 视图:add 和 setConstraints 之间有区别吗?