Ricerca…


Osservazioni

Il progetto di esempio pypa contiene un modello setup.py completo e facilmente modificabile che dimostra una vasta gamma di funzionalità che gli strumenti di configurazione hanno da offrire.

introduzione

Ogni pacchetto richiede un file setup.py che descrive il pacchetto.

Considera la seguente struttura di directory per un pacchetto semplice:

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

__init__.py contiene solo la riga def foo(): return 100 .

Il seguente setup.py definirà il pacchetto:

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 è ottimo per testare le installazioni dei pacchetti senza modificare gli altri ambienti 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

Caricamento su PyPI

Una volta che setup.py è completamente funzionante (vedi Introduzione ), è molto semplice caricare il pacchetto su PyPI .

Imposta un file .pypirc

Questo file memorizza login e password per autenticare i tuoi account. In genere è memorizzato nella tua directory home.

# .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

È più sicuro usare lo twine per caricare i pacchetti, quindi assicurati che sia installato.

$ pip install twine

Registrati e carica su testpypi (opzionale)

Nota : PyPI non consente la sovrascrittura dei pacchetti caricati , quindi è prudente testare prima la distribuzione su un server di test dedicato, ad esempio testpypi. Questa opzione sarà discussa. Prendi in considerazione uno schema di controllo delle versioni per il tuo pacchetto prima del caricamento, come la versione del calendario o il controllo delle versioni semantiche .

Accedi o crea un nuovo account su testpypi . La registrazione è richiesta solo la prima volta, anche se la registrazione più di una volta non è dannosa.

$ python setup.py register -r pypitest

Mentre si trova nella directory principale del pacchetto:

$ twine upload dist/* -r pypitest

Il tuo pacchetto dovrebbe ora essere accessibile tramite il tuo account.

analisi

Crea un ambiente virtuale di prova. Prova a pip install il pacchetto da 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

In caso di successo, il pacchetto è meno impor- tante. Potresti considerare di testare la tua API anche prima del tuo caricamento finale su PyPI. Se il pacchetto non è riuscito durante il test, non preoccuparti. Puoi ancora aggiustarlo, ricaricarlo su testpypi e provare di nuovo.

Registrati e carica su PyPI

Assicurarsi che sia stato installato il twine :

$ pip install twine

Accedere o creare un nuovo account su PyPI .

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

Questo è tutto! Il tuo pacco è ora in diretta .

Se scopri un bug, carica semplicemente una nuova versione del tuo pacchetto.

Documentazione

Non dimenticare di includere almeno una sorta di documentazione per il tuo pacchetto. PyPi prende come lingua di formattazione predefinita reStructuredText .

Leggimi

Se il tuo pacchetto non ha una grande documentazione, includi cosa può aiutare gli altri utenti nel file README.rst . Quando il file è pronto, è necessario un altro per dire a PyPi di mostrarlo.

Crea il file setup.cfg e inserisci queste due righe:

[metadata]
description-file = README.rst

Nota che se provi a mettere il file Markdown nel tuo pacchetto, PyPi lo leggerà come un puro file di testo senza alcuna formattazione.

Licenze

Spesso è più che benvenuto inserire un file LICENSE.txt nel pacchetto con una delle licenze OpenSource per dire agli utenti se possono usare il tuo pacchetto, ad esempio in progetti commerciali o se il tuo codice è utilizzabile con la loro licenza.

In modo più leggibile, alcune licenze sono spiegate in TL; DR .

Rendere eseguibile il pacchetto

Se il tuo pacchetto non è solo una libreria, ma ha un pezzo di codice che può essere usato come vetrina o come applicazione standalone quando il tuo pacchetto è installato, metti quel pezzo di codice nel file __main__.py .

Mettere il __main__.py nella package_name cartella. In questo modo sarai in grado di eseguirlo direttamente dalla console:

python -m package_name

Se non è disponibile __main__.py file __main__.py , il pacchetto non verrà eseguito con questo comando e questo errore verrà stampato:

python: nessun modulo chiamato package_name.__main__; 'package_name' è un pacchetto e non può essere eseguito direttamente.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow