2013-07-23 22 views
7

C'è un luogo canonico dove mettere i pacchetti autoprodotti? La mia ricerca ha prodotto solo un post sul blog su where to put version-independent pure Python packages e un SO question for the canonical location under Linux, mentre sto lavorando su Windows.Dove devo inserire i miei pacchetti Python autoprodotti?

Il mio caso d'uso è che mi piacerebbe poter importare i miei pacchetti durante una sessione IPython come qualsiasi altro pacchetto di siti, non importa in quale directory di lavoro ho avviato la sessione. In Matlab, la cartella corrispondente per esempio è semplicemente C:/Users/ojdo/Documents/MATLAB.

import mypackage as mp 
mp.awesomefunction() 
... 
+0

Preferisco incollare i file in 'C: \ PythonXX \ Lib \ site-packages'. Questo ha il vantaggio di non richiedere alcuna configurazione aggiuntiva - quella directory è in 'sys.path' di default. – bbayles

+4

Hai guardato [la documentazione] (http://docs.python.org/2/install/#how-installation-works)? Inoltre, puoi usare la variabile d'ambiente PYTHONPATH, come spiegato [in un'altra sezione dei documenti] (http://docs.python.org/2/install/#modifying-python-s-search-path). –

risposta

6

Grazie ai twoadditional link, ho trovato non solo la risposta destinata alla mia domanda, ma anche una soluzione che ho come ancora di più e che - ironia della sorte - è stato spiegato anche nel mio primo risultato di ricerca, ma offuscato da tutti i gergo del pacchetto del sito in versione - (in) dipendente.

risposta alla domanda iniziale

volevo sapere se ci fosse una canonica (come in "default") posizione per i miei pacchetti auto-scritta. E ciò che esiste:

>>> import site 
>>> site.USER_SITE 
'C:\\Users\\ojdo\\AppData\\Roaming\\Python\\Python27\\site-packages' 

La documentazione su user scheme package installation stato che questa cartella - se esiste - verrà automaticamente aggiunto al sys.path.

directory personalizzata per propri pacchetti

  1. creare una directory da nessuna parte, per esempio C:\Users\ojdo\Documents\Python\Libs.
  2. Aggiungere il file sitecustomize.py alla cartella dei pacchetti del sito dell'installazione Python, ad esempio in C:\Python27\Lib\site-packages (per tutti gli utenti) o site.USER_SITE (per un singolo utente).
  3. Questo file viene quindi riempita con il seguente codice:

    import site 
    site.addsitedir(r'C:\Users\ojdo\Any\Folder\You\Like\Libs') 
    
  4. Voilà, la nuova directory ora viene automaticamente aggiunto al sys.path in ogni sessione (I) Python.

Come funziona: Pacchetto site, che viene importato automaticamente ad ogni avvio di Python, cerca anche di importare il pacchetto sitecustomize per il pacchetto personalizzato modifiche di percorso. In questo caso, questo pacchetto fittizio è costituito da uno script che aggiunge la cartella del pacchetto personale al percorso Python.

+0

Lo farà una volta che sarà possibile. Ricevo un * "Puoi accettare la tua risposta domani" * adesso. – ojdo

+0

Nota: i documenti python hanno un errore - hanno un formato errato. Dice che i pacchetti dovrebbero essere in "modules: userbase/lib/pythonX.Y/site-packages" ma la directory (per 3.5) da site.USER_SITE è '~/Library/Python/3.5/lib/python/site-packages '- nota che XY non c'è. Il mio sito.USER_BASE è '~/Library/Python/3.5' –

7

Posizionare la fonte del vostro pacchetto ovunque vuoi, ma almeno dare il vostro pacchetto di un file minimo setup.py, subito fuori del pacchetto:

import setuptools 

setuptools.setup(name='mypackage') 

Poi finto-installare il pacchetto nel vostro python installazione di site-packages da running:

python setup.py develop 

Questo è un po 'come correre python setup.py install, ad eccezione del solo egg punti al tuo albero dei sorgenti, in modo da non dover install dopo e molto codice sorgente

Infine, si dovrebbe essere in grado di importare il pacchetto:

python -c "import mypackage as mp; print mp.awesomefunction()" 
1

Ho avuto la stessa domanda, e la risposta è molto utile. Per aggiungere un po ', mi sono imbattuto in questo esempio che è utile a me:

http://python-packaging.readthedocs.io/en/latest/minimal.html

Si tratta di un esempio minimo di come confezionare il proprio codice, e correttamente installato localmente (Immagino che questo è ciò che lo vuoi veramente) o distribuirlo su PyPI. Fare le cose in modo pitone.

+0

In aumento sia per il contenuto che per 'joke'. Quindi ... 'pip search funniest' – ojdo

Problemi correlati