Buscar..


Observaciones

El proyecto de ejemplo pypa contiene una plantilla setup.py fácilmente modificable y completa que demuestra una amplia gama de capacidades que las herramientas de configuración pueden ofrecer.

Introducción

Cada paquete requiere un archivo setup.py que describe el paquete.

Considere la siguiente estructura de directorio para un paquete simple:

+-- package_name
|       |
|       +-- __init__.py
|       
+-- setup.py

El __init__.py contiene solo la línea def foo(): return 100 .

El siguiente setup.py definirá el paquete:

from setuptools import setup


setup(
    name='package_name',                    # package name
    version='0.1',                          # version
    description='Package Description',      # short description
    url='http://example.com',               # package URL
    install_requires=[],                    # list of packages this package depends
                                            # on.
    packages=['package_name'],              # List of module names that installing
                                            # this package will provide.
)

virtualenv es ideal para probar las instalaciones de paquetes sin modificar sus otros entornos de Python:

$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo() 
100

Subiendo a PyPI

Una vez que su setup.py sea ​​completamente funcional (vea Introducción ), es muy fácil cargar su paquete a PyPI .

Configurar un archivo .pypirc

Este archivo almacena inicios de sesión y contraseñas para autenticar sus cuentas. Normalmente se almacena en su directorio personal.

# .pypirc file

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

Es más seguro usar twine para cargar paquetes, así que asegúrese de que esté instalado.

$ pip install twine

Registrarse y subir a testpypi (opcional)

Nota : PyPI no permite sobrescribir paquetes cargados , por lo que es prudente probar primero su implementación en un servidor de prueba dedicado, por ejemplo, testpypi. Esta opción será discutida. Considere un esquema de control de versiones para su paquete antes de cargar, como el control de versiones del calendario o el control de versiones semántico .

Inicie sesión o cree una nueva cuenta en testpypi . El registro solo se requiere la primera vez, aunque registrarse más de una vez no es perjudicial.

$ python setup.py register -r pypitest

Mientras que en el directorio raíz de su paquete:

$ twine upload dist/* -r pypitest

Su paquete ahora debe ser accesible a través de su cuenta.

Pruebas

Realiza un entorno virtual de prueba. Intente pip install su paquete desde testpypi o PyPI.

# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...

(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100

Si tiene éxito, su paquete es menos importable. Puede considerar probar su API también antes de su carga final a PyPI. Si el paquete falló durante la prueba, no se preocupe. Aún puedes arreglarlo, volver a subirlo a testpypi y probar de nuevo.

Registrarse y subir a PyPI

Asegúrate de que el twine esté instalado:

$ pip install twine

Inicie sesión o cree una nueva cuenta en PyPI .

$ python setup.py register -r pypi
$ twine upload dist/*

¡Eso es! Su paquete ya está en vivo .

Si descubre un error, simplemente cargue una nueva versión de su paquete.

Documentación

No olvide incluir al menos algún tipo de documentación para su paquete. PyPi toma como idioma de formato predeterminado reStructuredText .

Readme

Si su paquete no tiene una gran documentación, incluya lo que puede ayudar a otros usuarios en el archivo README.rst . Cuando el archivo está listo, se necesita otro para decirle a PyPi que lo muestre.

Cree el archivo setup.cfg y ponga estas dos líneas en él:

[metadata]
description-file = README.rst

Tenga en cuenta que si intenta colocar el archivo Markdown en su paquete, PyPi lo leerá como un archivo de texto puro sin ningún formato.

Licenciamiento

A menudo es más que bienvenido poner un archivo LICENSE.txt en su paquete con una de las licencias de OpenSource para informar a los usuarios si pueden usar su paquete, por ejemplo, en proyectos comerciales o si su código se puede usar con su licencia.

De manera más legible, algunas licencias se explican en TL; DR .

Haciendo paquete ejecutable

Si su paquete no es solo una biblioteca, sino que tiene una pieza de código que puede usarse como una vitrina o una aplicación independiente cuando su paquete está instalado, coloque esa pieza de código en el archivo __main__.py .

Ponga la __main__.py en el package_name carpeta. De esta manera podrás ejecutarlo directamente desde la consola:

python -m package_name

Si no hay __main__.py archivo __main__.py disponible, el paquete no se ejecutará con este comando y se imprimirá este error:

python: No hay un módulo llamado package_name.__main__; 'package_name' es un paquete y no se puede ejecutar directamente.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow