The difference between different methods of Python package management
I have been learning Python for a while, and I often encounter the problem of installing various packages, sometimes setup.py, sometimes easy_install, sometimes pip, and some concepts such as distutils , setuptools, etc., I am not sure who is who and when should I use what. Today I will clarify these concepts.
distutils
distutils is part of the Python standard library. Its original intention is to provide developers with a convenient packaging method and provide users with a convenient installation method.
For example, you create a package named foo, which contains a foo.py file, and you want to package it so that others can use it. At this time you need to write a setup.py file:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
)
Then run the command
$python setup.py sdist
Then you find that a folder named dist appears in the current directory, and there is a foo-1.0.tar.gz package in it. There are three files in this package, foo.py, setup.py, PKG-INFO. The first two files are the same as the two files we mentioned before. PKG-INFO is some information about the package. Then you can install foo-1.0.tar.gz for others.
When the installer wants to use this package, he only needs to unzip the foo-1.0.tar.gz file, and then run the command
$python setup install
The package will be automatically installed to the appropriate location in the system.
setuptools
setuptools is an enhancement to distutils, especially the introduction of package dependency management.
setuptools can create egg files for Python packages. The relationship between Python and egg files is equivalent to the relationship between java and jar packages.
The easy_install script provided by setuptools can be used to install the egg package. In addition, easy_install can automatically download relevant packages from PyPI and complete installation and upgrade.
easy_install provides a variety of ways to install and upgrade Python packages, such as:
easy_install SQLObject
easy_install -f http://pythonpaste.org/package_index.html SQLObject
easy_install http://example.com/path /to/MyPackage-1.2.3.tgz
easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
easy_install --upgrade PyProtocols
Later, developers felt that setuptools was developed too slowly and forked it out The Distribute project was merged into the Distribute project, and then in August 2013, Distribute was merged back into setuptools 0.7.
pip
pip is a tool for installing and managing Python packages. It is an enhancement to easy_install. You can also automatically download and install packages from PyPI.
In pip,
All required packages must be downloaded before installation, so there will be no situation where one part is installed and the other part is not.
All installed packages will be tracked, so you can know why they are installed. Installed and uninstalled at the same time.
No need to use egg file.
Easy to use:
pip install pkg_name
pip uninstall pkg_name