mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 18:07:37 +00:00 
			
		
		
		
	 3a9f58f6b3
			
		
	
	
		3a9f58f6b3
		
	
	
	
	
		
			
			This updates the user guide to refer to Packaging instead of Distutils. Some files still require an update.
		
			
				
	
	
		
			112 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
	
		
			2.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| ==================
 | |
| Packaging tutorial
 | |
| ==================
 | |
| 
 | |
| Welcome to the Packaging tutorial! We will learn how to use Packaging
 | |
| to package your project.
 | |
| 
 | |
| .. TODO merge with introduction.rst
 | |
| 
 | |
| 
 | |
| Getting started
 | |
| ---------------
 | |
| 
 | |
| Packaging works with the *setup.cfg* file. It contains all the metadata for
 | |
| your project, as defined in PEP 345, but also declare what your project
 | |
| contains.
 | |
| 
 | |
| Let's say you have a project called *CLVault* containing one package called
 | |
| *clvault*, and a few scripts inside. You can use the *pysetup* script to create
 | |
| a *setup.cfg* file for the project. The script will ask you a few questions::
 | |
| 
 | |
|    $ mkdir CLVault
 | |
|    $ cd CLVault
 | |
|    $ pysetup create
 | |
|    Project name [CLVault]:
 | |
|    Current version number: 0.1
 | |
|    Package description:
 | |
|    >Command-line utility to store and retrieve passwords
 | |
|    Author name: Tarek Ziade
 | |
|    Author e-mail address: tarek@ziade.org
 | |
|    Project Home Page: http://bitbucket.org/tarek/clvault
 | |
|    Do you want to add a package ? (y/n): y
 | |
|    Package name: clvault
 | |
|    Do you want to add a package ? (y/n): n
 | |
|    Do you want to set Trove classifiers? (y/n): y
 | |
|    Please select the project status:
 | |
| 
 | |
|    1 - Planning
 | |
|    2 - Pre-Alpha
 | |
|    3 - Alpha
 | |
|    4 - Beta
 | |
|    5 - Production/Stable
 | |
|    6 - Mature
 | |
|    7 - Inactive
 | |
| 
 | |
|    Status: 3
 | |
|    What license do you use: GPL
 | |
|    Matching licenses:
 | |
| 
 | |
|    1) License :: OSI Approved :: GNU General Public License (GPL)
 | |
|    2) License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
 | |
| 
 | |
|    Type the number of the license you wish to use or ? to try again:: 1
 | |
|    Do you want to set other trove identifiers (y/n) [n]: n
 | |
|    Wrote "setup.cfg".
 | |
| 
 | |
| 
 | |
| A setup.cfg file is created, containing the metadata of your project and the
 | |
| list of the packages it contains::
 | |
| 
 | |
|    $ cat setup.cfg
 | |
|    [metadata]
 | |
|    name = CLVault
 | |
|    version = 0.1
 | |
|    author = Tarek Ziade
 | |
|    author_email = tarek@ziade.org
 | |
|    description = Command-line utility to store and retrieve passwords
 | |
|    home_page = http://bitbucket.org/tarek/clvault
 | |
| 
 | |
|    classifier = Development Status :: 3 - Alpha
 | |
|        License :: OSI Approved :: GNU General Public License (GPL)
 | |
| 
 | |
|    [files]
 | |
|    packages = clvault
 | |
| 
 | |
| 
 | |
| Our project will depend on the *keyring* project. Let's add it in the
 | |
| [metadata] section::
 | |
| 
 | |
|    [metadata]
 | |
|    ...
 | |
|    requires_dist =
 | |
|        keyring
 | |
| 
 | |
| 
 | |
| Running commands
 | |
| ----------------
 | |
| 
 | |
| You can run useful commands on your project once the setup.cfg file is ready:
 | |
| 
 | |
| - sdist: creates a source distribution
 | |
| - register: register your project to PyPI
 | |
| - upload: upload the distribution to PyPI
 | |
| - install_dist: install it
 | |
| 
 | |
| All commands are run using the run script::
 | |
| 
 | |
|    $ pysetup run install_dist
 | |
|    $ pysetup run sdist
 | |
|    $ pysetup run upload
 | |
| 
 | |
| If you want to push a source distribution of your project to PyPI, do::
 | |
| 
 | |
|    $ pysetup run sdist register upload
 | |
| 
 | |
| 
 | |
| Installing the project
 | |
| ----------------------
 | |
| 
 | |
| The project can be installed by manually running the packaging install command::
 | |
| 
 | |
|    $ pysetup run install_dist
 |