Se il nome che do al modulo solitario in un pacchetto Python corrisponde al nome del pacchetto?Esistono regole per nominare i pacchetti Python a modulo singolo?
Per esempio se ho un pacchetto con un unico modulo con la struttura
super-duper/
super/
__init.py___
mycode.py
...
posso creare un pacchetto super-duper
su Cheese Shop, che, una volta installato, avrà due cartelle in site-packages
con nomi che non lo fanno partita:
super/
super_duper-1.2.3.dist-info/
il che significa che per importare il mio progetto che uso
import super
piuttosto che il nome del pacchetto attuale (super_duper
)
questo sembra essere contro la pratica comune (a giudicare dalle cartelle per i primi di ogni altro pacchetto che vedo in site-packages
) che seguono il modello
same_name/
same_name-1.2.3.dist-info/
per la Pacchetto PyPi same-name
.
Devo invece (sempre) strutturare i miei progetti in modo da
super-duper/
super_duper/
__init.py___
mycode.py
...
per garantire che il nome del pacchetto e il modulo nome di importazione "partita":
import super_duper
C'è una buona pratica rilevante o regola che dovrei seguire?
PEP 423 suona come la strada da percorrere. Sono confuso sull'uso dei punti ('.') nell'esempio. Potrei sostituire 'super_duper' dappertutto con' super.duper'? – orome
PEP 423 è stato rinviato perché era in corso la stesura di PEP 426. PEP 426 viene effettivamente abbandonato, tuttavia, temo che lo stesso valga per 423. Ci sono [alcune modifiche in sospeso] (https://mail.python.org/pipermail/python-dev/2013-July/127207.html) che non sono mai stati applicati, per esempio. –
@raxacoricofallapatorius I periodi nell'esempio sono in realtà namespacing - PEP 423 suggerisce anche che se un pacchetto è di proprietà di una singola entità, che la prima parte del nome del pacchetto sia il nome del proprietario. Questo aiuta a evitare i conflitti, così che se crei un pacchetto chiamato "piramide" e creo un pacchetto completamente diverso chiamato "piramide", un terzo utente può installarli entrambi e distinguerli. – mwobey