简体   繁体   中英

Does `pip install -U pip -r requirements.txt` upgrade pip before installing the requirements?

It seems to be common practice to set up a Python virtual environment using some variant of the following:

python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip -r requirements.txt

What I hope the above command does is:

  1. Upgrade pip first
  2. Run the installation of the packages in requirements.txt

However, what actually seems to happen is:

  1. Collects all packages, including newest version of pip
  2. Installs them all together
    • The original/outdated version of pip is what actually runs the installs
    • And the new version of pip is not used until after this command

Question(s)

  1. Is it possible to have pip upgrade itself and then install a requirements file, in one command?
    • Would this infer any particular benefits?
  2. Should I switch to the following?
python -m venv venv && source ./venv/bin/activate
python -m pip install -U pip
python -m pip install -r requirements.txt
  1. What is the optimal method to install requirements files?
    • I see people sometimes installing/upgrading wheel and setuptools as well

The answers to your questions are:

  1. No. pip doesn't currently treat itself as a special dependency, so it doesn't know to install then execute itself, which is what it would need to do to overcome the problems you observed.
  2. Updating pip in a separate step is indeed the recommended way to proceed.

You may from time to time see pip issue a message advising that a newer version is available. This happens a lot if you create them from a python with an outdated pip .

I had a situation similar to yours, I needed to first upgrade pip and then install a bunch of libraries in a lab that had 20 PCs. What I did was writing all the librarie's name in a requirements.txt file, then create a .bat file with two commands:

`python -m pip install --upgrade pip`
`pip install -r requirements.txt`

The first command for upgrading pip and the second one for installing all the libraries listed in the requirements.txt file.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM