【发布时间】:2021-02-01 00:30:40
【问题描述】:
使用以下一些变体设置 Python 虚拟环境似乎是一种常见的做法:
python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip -r requirements.txt
我希望上面的命令做的是:
- 先升级
pip - 运行
requirements.txt中的包安装
然而,实际上似乎发生的是:
- 收集所有包,包括最新版本的
pip - 将它们全部安装在一起
-
pip的原始/过时版本是实际运行安装的对象 - 并且
pip的新版本不在此命令之后才使用
-
问题
- 是否可以让 pip 自行升级,然后在一个命令中安装需求文件?
- 这会推断出任何特定的好处吗?
- 我应该切换到以下吗?
python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip
python -m pip install -r requirements.txt
- 安装需求文件的最佳方法是什么?
- 我看到人们有时也会安装/升级
wheel和setuptools
- 我看到人们有时也会安装/升级
【问题讨论】:
-
我对 weels 有同样的问题,因为它破坏了我的 bcrypt 包安装。首先将 weels 安装作为单独的命令,然后是我的要求,效果很好。
-
我认为您混淆了三件事:
one command、one process和a single line。您可以用两个命令编写一行来执行您想要的操作,但它永远不会是单个进程,因为根据定义,运行命令是使用二进制文件,因此二进制文件不能更改 和 在同一个流程执行中,使用这个更改后的新二进制版本来执行另一个步骤。根据定义(尽管您可能会从外部将其理解为一步),这将是一个接一个地执行的两个过程。
标签: python pip python-venv requirements.txt