[Python] Percorso di ricerca moduli.

2014-12-12 Thread Gabriele Battaglia

Salve a tutti.

Un domandone banale, per il quale ammetto candidamente di vergognarmi 
mostruosamente e faccio appello alla vostra infinita pazienza.


Nel percorso "C:\Dropbox\py" è presente il modulo key.py.

Io ho bisogno di importarlo dallo script e4ec.py che risiede nel 
percorso "C:\Dropbox\py\e4ec"


Ovviamente,

import key

non funziona, perchè key.py non si trova nella cartella dello script 
principale ne in quelle indicate da PYTHONPATH, che nel mio caso risulta 
non definita.


Allora ho provato a scrivere

PYTHONPATH = ["C:\\Dropbox\\py\\e4ec"]

Ma continua a non trovare key.py generando un ImportError di module not 
found.


Qualche indizio per orientarmi verso la soluzione?

Gabriele.

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread Alessandro Dentella
On Fri, Dec 12, 2014 at 02:52:05PM +0100, Gabriele Battaglia wrote:
> Salve a tutti.
> 
> Un domandone banale, per il quale ammetto candidamente di
> vergognarmi mostruosamente e faccio appello alla vostra infinita
> pazienza.
> 
> Nel percorso "C:\Dropbox\py" è presente il modulo key.py.
> 
> Io ho bisogno di importarlo dallo script e4ec.py che risiede nel
> percorso "C:\Dropbox\py\e4ec"

> 
> Ovviamente,
> 
> import key
> 
> non funziona, perchè key.py non si trova nella cartella dello script
> principale ne in quelle indicate da PYTHONPATH, che nel mio caso
> risulta non definita.
> 
> Allora ho provato a scrivere
> 
> PYTHONPATH = ["C:\\Dropbox\\py\\e4ec"]

PYTHONPATH è una variabile d'ambiente, non una lista python:

 PYTHONPATH

Augment the default search path for module files. The format is
the same as the shell’s PATH: one or more directory pathnames
separated by os.pathsep (e.g. colons on Unix or semicolons on
Windows). Non-existent directories are silently ignored.

credo inoltre ma suggerisco di verificarlo che tu possa mettere u
signolo /: PYTHONPATH=C:/Dropbox/py/e4ec


> Qualche indizio per orientarmi verso la soluzione?


Analizzare os.path


sandro
*:-)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread enrico franchi
2014-12-12 14:08 GMT+00:00 Alessandro Dentella :
>
>
> > Qualche indizio per orientarmi verso la soluzione?
>
>
> Analizzare os.path


E, per inciso, la soluzione *non* e' smacchinare con il path (non e'
os.path, che e' poveraccio solo un modulo).
La soluzione e' usare virtualenv, setup.py, pip e compagnia.


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread Manlio Perillo
2014-12-12 14:52 GMT+01:00 Gabriele Battaglia :
>
> Salve a tutti.
>
> Un domandone banale, per il quale ammetto candidamente di vergognarmi
> mostruosamente e faccio appello alla vostra infinita pazienza.
>
> > [...]

>
> Allora ho provato a scrivere
>
> PYTHONPATH = ["C:\\Dropbox\\py\\e4ec"]
>
>
Prova con sys.path.append(r"C:\Dropbox\py\e4ec")
Quello che hai scritto non fa nulla.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread Alberto Granzotto
2014-12-12 15:47 GMT+01:00 Manlio Perillo :
>
> 2014-12-12 14:52 GMT+01:00 Gabriele Battaglia :
>>
>> Salve a tutti.
>>
>> Un domandone banale, per il quale ammetto candidamente di vergognarmi
>> mostruosamente e faccio appello alla vostra infinita pazienza.
>>
>> > [...]
>
>>
>> Allora ho provato a scrivere
>>
>> PYTHONPATH = ["C:\\Dropbox\\py\\e4ec"]
>>
>>
> Prova con sys.path.append(r"C:\Dropbox\py\e4ec")
> Quello che hai scritto non fa nulla.
>


La soluzione corretta è quella di Manlio.
Giusto per chiarire, credo tu abbia confuso la variabile d'ambiente
"PYTHONPATH" (che imposti quindi PRIMA di far partire l'interprete python)
con una variabile generica Python.

Puoi impostare PYTHONPATH dal pannello di controllo
 di windows.
Da sistemi UNIX puoi fare:

vrde@pulp:~$ PYTHONPATH=*/home/vrde/test* python
Python 2.7.8
>>> import sys
>>> sys.path
['', '*/home/vrde/test*', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu', ... ]


Per me non è una *best practice* impostare il PYTHONPATH a mano oppure
modificare sys.path, ti consiglio quindi di utilizzare un *virtual env*, e
installare dentro il virtual env le dipendenze che servono al tuo progetto.
Alternativamente puoi creare una cartella nel tuo sistema dove metti tutte
le tue dipendenze python (chessò, C:\...\pythonmodules) che aggiungi in
modo permanente al PYTHONPATH dal pannello di controllo.

ciao,
Alberto

PS: non sono utente Windows
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread Alessandro Dentella
On Fri, Dec 12, 2014 at 02:22:40PM +, enrico franchi wrote:
> 2014-12-12 14:08 GMT+00:00 Alessandro Dentella :
> >
> >
> > > Qualche indizio per orientarmi verso la soluzione?
> >
> >
> > Analizzare os.path
> 
> 
> E, per inciso, la soluzione *non* e' smacchinare con il path (non e'
> os.path, che e' poveraccio solo un modulo).

ok, per distrazione ho scritto os.path invece che sys.path
Il senso era ovviamente quello che il modo di debuggare dove sta il
problema è di analizzare sys.path. Se un modulo non è nel sys.path non
viene visto se sta lì deve essere visto. PYTHONPATH è *un* modo di
manipolare il sys.path:

sandro@bluff:~$ PYTHONPATH=/tmp/my/funny/path ipython --no-banner

  In [1]: import sys

  In [2]: sys.path
  Out[2]: 
  ['',
   '/usr/bin',
   '/tmp/my/funny/path',
   '/usr/lib/python2.7',
   ...



> La soluzione e' usare virtualenv, setup.py, pip e compagnia.

dipende. PYTHONPATH è comodo se ad esempio vuoi provare un pacchetto
senza installarlo, magari prorpio per vedere le differenze fra due rel
delo stesso pacchetto.


Puoi anche essere già un in virtualenv e usare PYTONPATH per dare la
precedenza ad una versione che vuoi testare senza toccare altro.

sandro
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Thread Gabriele Battaglia


Manlio Perillo, alle 15:47 del 12/12/2014, digitò:
2014-12-12 14:52 GMT+01:00 Gabriele Battaglia >:


Salve a tutti.

Un domandone banale, per il quale ammetto candidamente di
vergognarmi mostruosamente e faccio appello alla vostra infinita
pazienza.

> [...]


Allora ho provato a scrivere

PYTHONPATH = ["C:\\Dropbox\\py\\e4ec"]


Prova con sys.path.append(r"C:\Dropbox\py\e4ec")


CIao Manlio, ora mi è chiaro.
Ha funzionato:

sys.path.append(r"C:\Dropbox\py")

Ora il modulo viene individuato ed importato senza problemi.

Grazie! ...Grazie anche ad Alessandro ed agli altri che mi hanno 
permesso di rispolverare i concetti base delle variabili d'ambiente.

GB.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-14 Thread enrico franchi
2014-12-12 15:07 GMT+00:00 Alessandro Dentella :
>
> > La soluzione e' usare virtualenv, setup.py, pip e compagnia.
>
> dipende. PYTHONPATH è comodo se ad esempio vuoi provare un pacchetto
> senza installarlo, magari prorpio per vedere le differenze fra due rel
> delo stesso pacchetto.
>
> Puoi anche essere già un in virtualenv e usare PYTONPATH per dare la
> precedenza ad una versione che vuoi testare senza toccare altro.
>

Uhm... no? Il problema di OP e' essenzialmente quello di usare una libreria
da un altro modulo.
Ora, questo problema puoi risolverlo in tantissimi modi. Ma il modo
*pulito* e' quello di giocarsela con setup.py e possibilmente virtualenv.

Anche perche' suddetti modi in un qualche modo automatizzando una parte del
processo di deploy. E sfortunatamente *solo* una parte.

Poi che ci siano una serie di casi in cui e' comodo smacchinare con il path
a mano nessuno lo mette in dubbio. Figurati, non sono certo io a poter
scagliare la prima idea (non avete idea... ma sfortunatamente in pubblico
devo tacere). Pero', sebbene risolva il problema *immediato* di OP, secondo
me non e' una buona soluzione a lungo termine. Cioe', 12 anni fa, quando
non avevo idea, facevo cosi' anche io. Ma se la memoria mi serve bene
c'erano tante cose di meno... e si faceva tutto un po' piu' a mano.

Poi bisognerebbe entrare in una questione di gestione del progetto (tipo
quella libreria la sta davvero bene tutta sola soletta o alla fine dei
conti e' talmente legata al programma principale da farne parte?)


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python