Pip freeze vs. pip list

前端 未结 5 1291
鱼传尺愫
鱼传尺愫 2020-12-04 06:58

A comparison of outputs reveals differences:

user@user-VirtualBox:~$ pip list
feedparser (5.1.3)
pip (1.4.1)
setuptools (1.1.5)
wsgiref (0.1.2)
user@user-Vir         


        
相关标签:
5条回答
  • 2020-12-04 07:07

    The main difference is that the output of pip freeze can be dumped into a requirements.txt file and used later to re-construct the "frozen" environment.

    In other words you can run: pip freeze > frozen-requirements.txt on one machine and then later on a different machine or on a clean environment you can do: pip install -r frozen-requirements.txt and you'll get the an identical environment with the exact same dependencies installed as you had in the original environment where you generated the frozen-requirements.txt.

    0 讨论(0)
  • 2020-12-04 07:17

    When you are using a virtualenv, you can specify a requirements.txt file to install all the dependencies.

    A typical usage:

    $ pip install -r requirements.txt
    

    The packages need to be in a specific format for pip to understand, which is

    feedparser==5.1.3
    wsgiref==0.1.2
    django==1.4.2
    ...
    

    That is the "requirements format".

    Here, django==1.4.2 implies install django version 1.4.2 (even though the latest is 1.6.x). If you do not specify ==1.4.2, the latest version available would be installed.

    You can read more in "Virtualenv and pip Basics", and the official "Requirements File Format" documentation.

    0 讨论(0)
  • 2020-12-04 07:19

    To answer the second part of this question, the two packages shown in pip list but not pip freeze are setuptools (which is easy_install) and pip itself.

    It looks like pip freeze just doesn't list packages that pip itself depends on. You may use the --all flag to show also those packages.

    From the documentation:

    --all

    Do not skip these packages in the output: pip, setuptools, distribute, wheel

    0 讨论(0)
  • 2020-12-04 07:21

    pip list shows ALL installed packages.

    pip freeze shows packages YOU installed via pip (or pipenv if using that tool) command in a requirements format.

    Remark below that setuptools, pip, wheel are installed when pipenv shell creates my virtual envelope. These packages were NOT installed by me using pip:

    test1 % pipenv shell
    Creating a virtualenv for this project…
    Pipfile: /Users/terrence/Development/Python/Projects/test1/Pipfile
    Using /usr/local/Cellar/pipenv/2018.11.26_3/libexec/bin/python3.8 (3.8.1) to create virtualenv…
    ⠹ Creating virtual environment...
    <SNIP>
    Installing setuptools, pip, wheel...
    done.
    ✔ Successfully created virtual environment! 
    <SNIP>
    

    Now review & compare the output of the respective commands where I've only installed cool-lib and sampleproject (of which peppercorn is a dependency):

    test1 % pip freeze       <== Packages I'VE installed w/ pip
    
    -e git+https://github.com/gdamjan/hello-world-python-package.git@10<snip>71#egg=cool_lib
    peppercorn==0.6
    sampleproject==1.3.1
    
    
    test1 % pip list         <== All packages, incl. ones I've NOT installed w/ pip
    
    Package       Version Location                                                                    
    ------------- ------- --------------------------------------------------------------------------
    cool-lib      0.1  /Users/terrence/.local/share/virtualenvs/test1-y2Zgz1D2/src/cool-lib           <== Installed w/ `pip` command
    peppercorn    0.6       <== Dependency of "sampleproject"
    pip           20.0.2  
    sampleproject 1.3.1     <== Installed w/ `pip` command
    setuptools    45.1.0  
    wheel         0.34.2
    
    0 讨论(0)
  • 2020-12-04 07:30

    Look at the pip documentation, which describes the functionality of both as:

    pip list

    List installed packages, including editables.

    pip freeze

    Output installed packages in requirements format.

    So there are two differences:

    1. Output format, freeze gives us the standard requirement format that may be used later with pip install -r to install requirements from.

    2. Output content, pip list include editables which pip freeze does not.

    0 讨论(0)
提交回复
热议问题