Gestisci il tuo repository PyPi con JFrog

Sapevi che con puoi creare il tuo repository PyPi privato sfruttando JFrog? In questo post, vediamo come farlo e come caricare il tuo modulo all’interno del repo!
TOC
Cos’è PyPi
PyPI è utilizzato per gestire e installare pacchetti per progetti Python. Consente a chi sviluppa di gestire facilmente le dipendenze e semplificare il processo di installazione per le loro applicazioni.
PyPI è gestito dalla Python Software Foundation (PSF) ed è gratuito per sviluppatori e utenti finali. È un componente essenziale dell’ecosistema Python e ha contribuito alla popolarità e alla crescita del linguaggio.
Upload della tua libreria Python sul registry interno
Crea il tuo modulo Python
Usando strumento come Pycharm, è davvero facile: clicca con il destro sulla cartella principale e seleziona la voce “New>Python Module”:
Altrimenti, crea una cartella nella tua directory preferita e dalle lo stesso nome del pacchetto che vuoi creare e uploadare sul repository. Ad esempio, crea una cartella myapp e al suo interno aggiungi la cartella per il modulo pypi-test, in maniera simile alla seguente immagine.
Crea il file setup.py
Per pubblicare il tuo pacchetto Python sul repository, devi creare un file setup.py
che contiene i metadata del tuo pacchetto come nome, versione, librerie e dipendenze.
Crea un nuovo file denominato “setup.py
” nella directory del progetto e aggiungi il seguente codice:
from setuptools import setup
setup(
name='pypi-test',
version='0.1',
description='Lorem ipsum',
author='Serena Sensini',
author_email='info@theredcode.it',
packages=['pypi-test'],
install_requires=[
],
)
Ogni informazione contenuta in questo file è puramente di esempio: possiamo inserire la descrizione oppure no, quali sono i nomi e la versione della libreria, e via dicendo. La cosa importante è definire il nome del pacchetto tramite packages ed eventuali dipendenze che vanno incluse in install_requires.
Questo file dev’essere inserito nella cartella principale del progetto: nel caso di esempio, questo va inserito nella cartella pypi-test principale.
Creazione del pacchetto
Una volta pronto questo file, per creare il pacchetto, esegui il seguente comando nella directory principale del progetto:
python setup.py sdist
>>>
python setup.py sdist
running sdist
running egg_info
writing pypi_test.egg-info\PKG-INFO
writing dependency_links to pypi_test.egg-info\dependency_links.txt
writing top-level names to pypi_test.egg-info\top_level.txt
reading manifest file 'pypi_test.egg-info\SOURCES.txt'
writing manifest file 'pypi_test.egg-info\SOURCES.txt'
running check
creating pypi_test-0.1
creating pypi_test-0.1\pypi-test
creating pypi_test-0.1\pypi_test.egg-info
copying files to pypi_test-0.1...
copying README.md -> pypi_test-0.1
copying setup.py -> pypi_test-0.1
copying pypi-test\__init__.py -> pypi_test-0.1\pypi-test
copying pypi_test.egg-info\PKG-INFO -> pypi_test-0.1\pypi_test.egg-info
copying pypi_test.egg-info\SOURCES.txt -> pypi_test-0.1\pypi_test.egg-info
copying pypi_test.egg-info\dependency_links.txt -> pypi_test-0.1\pypi_test.egg-info
copying pypi_test.egg-info\top_level.txt -> pypi_test-0.1\pypi_test.egg-info
copying pypi_test.egg-info\SOURCES.txt -> pypi_test-0.1\pypi_test.egg-info
Writing pypi_test-0.1\setup.cfg
creating dist
Creating tar archive
removing 'pypi_test-0.1' (and everything under it)
Questo creerà un pacchetto .tar.gz una nuova directory denominata “dist”.
Esistono delle alternative a sdist: un esempio è wheels, più performante per distribuzioni basate su codice sorgente, perché produce dei binari, o pyinstaller, che produce un file eseguibile su varie piattaforme. Dipende dallo scopo!
Crea un file .pypirc
Questo file è necessario per fare l’upload su un repository dove è richiesta l’autenticazione: che sia PyPi o JFrog, è necessario compilarlo con alcune informazioni e inserirlo nella cartella principale del tuo progetto.
Un esempio è il seguente:
[distutils]
index-servers =
local
[local]
repository = https://<your-artifactory-url>/artifactory/api/pypi/<repository-key>/
username = <your-username>
password = <your-access-token>
local è il nome assegnato al repository che stiamo descrivendo e può quindi essere sostituito con un nome a piacere. Poi, utilizzando quello stesso riferimento, inseriamo le informazioni per accedere al repository che dev’essere stato creato in precedenza: l’URL, username e password o in alternativa il token.
Carica il pacchetto sul repository
Per caricare il tuo pacchetto sul repository, devi prima creare un account sul sito Web di PyPI.
Una volta fatto, esegui il seguente comando nella directory del progetto:
twine upload dist/*
Twine è uno dei tanti strumenti che si possono utilizzare per fare l’upload. Deve essere installato tramite
pip install twine
e poi si può eseguire il comando precedente.
In alternativa, usa il comando seguente:
python setup.py sdist upload -r local
Questo caricherà il tuo pacchetto sul repository definito local all’interno del file .pypirc
.
Installa il pacchetto
Per installare il tuo pacchetto ora che è disponibile, esegui il seguente comando:
pip install mypackage
Sostituendo “mypackage” con il nome del tuo pacchetto, ed il gioco è fatto!