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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python