Browse Source

update docs and refer to setuptools

pull/1795/head
Corey Goldberg 9 years ago
parent
commit
1cc9ccfc67
  1. 35
      docs/patterns/distribute.rst

35
docs/patterns/distribute.rst

@ -4,10 +4,9 @@ Deploying with Setuptools
========================= =========================
`Setuptools`_, is an extension library that is commonly used to `Setuptools`_, is an extension library that is commonly used to
(like the name says) distribute Python libraries and distribute Python libraries and extensions. It extends distutils, a basic
extensions. It extends distutils, a basic module installation system module installation system shipped with Python to also support various more
shipped with Python to also support various more complex constructs that complex constructs that make larger applications easier to distribute:
make larger applications easier to distribute:
- **support for dependencies**: a library or application can declare a - **support for dependencies**: a library or application can declare a
list of other libraries it depends on which will be installed list of other libraries it depends on which will be installed
@ -16,15 +15,15 @@ make larger applications easier to distribute:
Python installation. This makes it possible to query information Python installation. This makes it possible to query information
provided by one package from another package. The best known feature of provided by one package from another package. The best known feature of
this system is the entry point support which allows one package to this system is the entry point support which allows one package to
declare an "entry point" another package can hook into to extend the declare an "entry point" that another package can hook into to extend the
other package. other package.
- **installation manager**: :command:`easy_install`, which comes with distribute - **installation manager**: :command:`easy_install`, which comes with setuptools
can install other libraries for you. You can also use `pip`_ which can install other libraries for you. You can also use :command:`pip`_ which
sooner or later will replace :command:`easy_install` which does more than just sooner or later will replace :command:`easy_install` which does more than just
installing packages for you. installing packages for you.
Flask itself, and all the libraries you can find on the cheeseshop Flask itself, and all the libraries you can find on PyPI are distributed with
are distributed with either distribute, the older setuptools or distutils. either setuptools or distutils.
In this case we assume your application is called In this case we assume your application is called
:file:`yourapplication.py` and you are not using a module, but a :ref:`package :file:`yourapplication.py` and you are not using a module, but a :ref:`package
@ -32,7 +31,7 @@ In this case we assume your application is called
a package, head over to the :ref:`larger-applications` pattern to see a package, head over to the :ref:`larger-applications` pattern to see
how this can be done. how this can be done.
A working deployment with distribute is the first step into more complex A working deployment with setuptools is the first step into more complex
and more automated deployment scenarios. If you want to fully automate and more automated deployment scenarios. If you want to fully automate
the process, also read the :ref:`fabric-deployment` chapter. the process, also read the :ref:`fabric-deployment` chapter.
@ -66,7 +65,7 @@ A basic :file:`setup.py` file for a Flask application looks like this::
) )
Please keep in mind that you have to list subpackages explicitly. If you Please keep in mind that you have to list subpackages explicitly. If you
want distribute to lookup the packages for you automatically, you can use want setuptools to lookup the packages for you automatically, you can use
the `find_packages` function:: the `find_packages` function::
from setuptools import setup, find_packages from setuptools import setup, find_packages
@ -78,7 +77,7 @@ the `find_packages` function::
Most parameters to the `setup` function should be self explanatory, Most parameters to the `setup` function should be self explanatory,
`include_package_data` and `zip_safe` might not be. `include_package_data` and `zip_safe` might not be.
`include_package_data` tells distribute to look for a :file:`MANIFEST.in` file `include_package_data` tells setuptools to look for a :file:`MANIFEST.in` file
and install all the entries that match as package data. We will use this and install all the entries that match as package data. We will use this
to distribute the static files and templates along with the Python module to distribute the static files and templates along with the Python module
(see :ref:`distributing-resources`). The `zip_safe` flag can be used to (see :ref:`distributing-resources`). The `zip_safe` flag can be used to
@ -94,7 +93,7 @@ Distributing Resources
If you try to install the package you just created, you will notice that If you try to install the package you just created, you will notice that
folders like :file:`static` or :file:`templates` are not installed for you. The folders like :file:`static` or :file:`templates` are not installed for you. The
reason for this is that distribute does not know which files to add for reason for this is that setuptools does not know which files to add for
you. What you should do, is to create a :file:`MANIFEST.in` file next to your you. What you should do, is to create a :file:`MANIFEST.in` file next to your
:file:`setup.py` file. This file lists all the files that should be added to :file:`setup.py` file. This file lists all the files that should be added to
your tarball:: your tarball::
@ -110,7 +109,7 @@ parameter of the `setup` function to ``True``!
Declaring Dependencies Declaring Dependencies
---------------------- ----------------------
Dependencies are declared in the `install_requires` parameter as list. Dependencies are declared in the `install_requires` parameter as a list.
Each item in that list is the name of a package that should be pulled from Each item in that list is the name of a package that should be pulled from
PyPI on installation. By default it will always use the most recent PyPI on installation. By default it will always use the most recent
version, but you can also provide minimum and maximum version version, but you can also provide minimum and maximum version
@ -125,15 +124,15 @@ requirements. Here some examples::
As mentioned earlier, dependencies are pulled from PyPI. What if you As mentioned earlier, dependencies are pulled from PyPI. What if you
want to depend on a package that cannot be found on PyPI and won't be want to depend on a package that cannot be found on PyPI and won't be
because it is an internal package you don't want to share with anyone? because it is an internal package you don't want to share with anyone?
Just still do as if there was a PyPI entry for it and provide a list of Just do it as if there was a PyPI entry and provide a list of
alternative locations where distribute should look for tarballs:: alternative locations where setuptools should look for tarballs::
dependency_links=['http://example.com/yourfiles'] dependency_links=['http://example.com/yourfiles']
Make sure that page has a directory listing and the links on the page are Make sure that page has a directory listing and the links on the page are
pointing to the actual tarballs with their correct filenames as this is pointing to the actual tarballs with their correct filenames as this is
how distribute will find the files. If you have an internal company how setuptools will find the files. If you have an internal company
server that contains the packages, provide the URL to that server there. server that contains the packages, provide the URL to that server.
Installing / Developing Installing / Developing

Loading…
Cancel
Save