Gestisci il tuo repository PyPi con JFrog

  • Di
  • 2025-03-20 - 4 minuti
banner

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!

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful
Logo di VueSchool

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

#TheRedComics

Edizione di Gennaio - Buon Anno nuovo!

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di dicembre di Sophie Aiello, Copy di Chiara Romano

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!