================ Python packaging ================ Python Package Index ==================== PyPI ---- https://pypi.python.org/pypi - 412.256 paquetes - OSS - **no auditadas** Virtual environment =================== Creación entornos virtuales --------------------------- ``pyenv`` o ``python3 -m venv`` .. code:: $ pyenv $ source /bin/activate ... $ deactivate $ rm -rf En Windows: .. code:: > C:\Python36\python -m venv > \Scripts\Activate.bat ... > deactivate - Referencia https://docs.python.org/3/library/venv.html Instalación de paquetes ======================= pip --- - ``pip3`` o ``python -m pip`` o ``py -m pip`` - Dentro de un entorno virtual o *system-wide* .. code:: $ pip install SomePackage $ pip install SomePackage==1.2.3 $ pip install -r requirements.txt .. code:: $ pip list $ pip show SomePackage $ pip freeze .. code:: $ pip uninstall SomePackage Otros índices ------------- * Cache * Servidor local * Repositorios de terceros Más info -------- - https://pip.pypa.io/en/latest/user_guide.html#installing-packages Creación de paquetes con módulo setuptools ========================================== setup.py -------- .. code:: python from setuptools import setup, find_packages # Always prefer setuptools over distutils from codecs import open # To use a consistent encoding from os import path here = path.abspath(path.dirname(__file__)) # Get the long description from the relevant file with open(path.join(here, 'DESCRIPTION.rst'), encoding='utf-8') as f: long_description = f.read() setup( name='sample', # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # http://packaging.python.org/en/latest/tutorial.html#version version='1.2.0', description='A sample Python project', long_description=long_description, # The project's main homepage. url='https://github.com/pypa/sampleproject', # Author details author='The Python Packaging Authority', author_email='pypa-dev@googlegroups.com', # Choose your license license='MIT', # See https://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers=[ # How mature is this project? Common values are # 3 - Alpha # 4 - Beta # 5 - Production/Stable 'Development Status :: 3 - Alpha', # Indicate who your project is intended for 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', # Pick your license as you wish (should match "license" above) 'License :: OSI Approved :: MIT License', # Specify the Python versions you support here. In particular, ensure # that you indicate whether you support Python 2, Python 3 or both. 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', ], # What does your project relate to? keywords='sample setuptools development', # You can just specify the packages manually here if your project is # simple. Or you can use find_packages(). packages=find_packages(exclude=['contrib', 'docs', 'tests*']), # List run-time dependencies here. These will be installed by pip when your # project is installed. For an analysis of "install_requires" vs pip's # requirements files see: # https://packaging.python.org/en/latest/technical.html#install-requires-vs-requirements-files install_requires=['peppercorn'], # If there are data files included in your packages that need to be # installed, specify them here. If using Python 2.6 or less, then these # have to be included in MANIFEST.in as well. package_data={ 'sample': ['package_data.dat'], }, # Although 'package_data' is the preferred approach, in some case you may # need to place data files outside of your packages. # see http://docs.python.org/3.6/distutils/setupscript.html#installing-additional-files # In this case, 'data_file' will be installed into '/my_data' data_files=[('my_data', ['data/data_file'])], # To provide executable scripts, use entry points in preference to the # "scripts" keyword. Entry points provide cross-platform support and allow # pip to create the appropriate form of executable for the target platform. entry_points={ 'console_scripts': [ 'sample=sample:main', ], }, ) Modo desarrollo --------------- .. code:: $ python setup.py develop .. code:: $ pip install -e . Distribución ------------ .. code:: $ python setup.py sdist Más info -------- - https://packaging.python.org/en/latest/tutorial.html#creating-your-own-project