[Python] Cartelle di Python su linux
Daniele Varrazzo
piro a develer.com
Ven 30 Nov 2012 19:49:02 CET
On 2012-11-30 18:41, Marco Giusti wrote:
> On Fri, Nov 30, 2012 at 05:13:11PM +0000, piergiorgio pancino wrote:
>> Ciao,
>> forse è più una domanda di linux che non di python... comunque...
>> potreste spiegarmi brevemente come si organizzano i file e le
>> librerie
>> su linux? Su windows mi è chiaro nel senso che è tutto con dentro
>> la
>> cartella di Python e le librerie aggiunte sono su site-packages, ma
>> su
>> linux? Vedo che viene spezzata la parte di file utente e il software
>> in se.
>
> in breve:
>
> python -c 'import sys; sys.path'
>
> queste sono tutte le directory dove vengono cercati i moduli python.
> In
> realtà è ben più crudele e i moduli possono trovarsi anche altrove
> oppure non trovarsi affatto sul computer[1]. per approfondire,
> pep-420[2].
>
> [1] http://pypi.python.org/pypi/urlimport/
> [2] http://www.python.org/dev/peps/pep-0420/
>
>> Dove devo mettere mano se voglio modificare le librerie? E i file
>> compilati in C dove sono?
>
> dipende quali librerie vuoi modificare. chiamiamoli moduli da qui in
> avanti. se il modulo non fa' parte della libreria standatd di python
> e
> hai possibilità semplicamente disinstallalo e installa la tua
> versione
> modificata. in caso contrario puoi "semplicemente" rimpiazzare una
> funzione o classe con la tua versione aggiornata:
>
> import zazza
> zazza.funzione_cool = funzione_piu_cool
>
> ma in questo caso preparati ad essere colto da tarantismo.
>
> In generale su linux i moduli possono essere "di sistema", ovvero
> installati attraverso i vari tool della tua distribuzione (i.e. in
> debian: sudo apt-get install python-lxml) oppure puoi installarli
> nella
> tua home e istruire l'interprede su dove andare a cercarli. io usavo
> fare così:
>
> $ mkdir -p ~/.local/lib/python2.7/site-packages
> $ echo export PYTHONPATH="$HOME"/.local/lib/python2.7/site-packages
> >> .bashrc
>
> adesso però virtualenv e virtualenv-wrapper sono molto più comodi.
Mi sembra, da quello che ho visto ultimamente, che la cosa sia un po'
più ordinata rispetto a un po' di versioni fa. O forse è solo
un'organizzazione che ubuntu ha raffinato nelle ultime release. A me
comunque c'è:
- /usr/lib/pythonX.Y/: la stdlib di python
- /usr/lib/pythonX.Y/dist-packages/: i package installati col package
manager di sistema (e.g. apt-get install python-foo)
- /usr/local/lib/pythonX.Y/dist-packages/: i package installati
"manualmente" come root, per tutto il sistema
(e.g. "sudo pip install foo" o "sudo python setup.py install")
- $HOME/.local/lib/pythonX.Y/site-packages/: i package installati
"manualmente" con il singolo utente
(e.g. "pip install --user foo" o "python setup.py install --user")
L'ultima locazione, in particolare, non l'avevo notata prima, e mi
sembra comoda. In passato, inoltre, mi sembra che /usr/local/lib non
fosse usato, ma potrei sbagliare. Su ubuntu, per queste directory, non
occorre neanche manipolare il PYTHONPATH: python le conosce già.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python