[Python] Conflitto import path con nose

Manlio Perillo manlio.perillo a gmail.com
Mer 5 Ago 2015 19:43:05 CEST


2015-08-05 19:00 GMT+02:00 Marco Giusti <marco.giusti a posteo.de>:

> On Wed, Aug 05 2015, Manlio Perillo wrote:
> > Oggi per la prima volta sto lavorando ad un progetto che contiene più di
> un
> > package:
> >
> > pkg/
> >     foo/
> >     bar/
> >     test/
> >         foo/
> >         bar/
> >
> > La directory `test` contiene la test suite.
> >
> > Il problema è che quando eseguo i test con nosetests, l'istruzione
> > `import foo` importa il package da `pkg/test/foo` invece che `pkg/foo`.
>
> > [...]

> > Qualcuno può confermare il problema e suggerire una soluzione?
>
> Non saprei dirti, il semplice test che ho fatto sembra funzionare.
>

Usi Python 3 o Python 2?
Io sto usando Python 2.


> La prima cosa che ho pensato è che nose cambiasse il path corrente e,
> per esempio, trovandosi in test/, importasse i moduli sbalgiati.


Lo fa.
Senza l'opzione -P aggiunge la directory che sta testando all'inizio di
sys.path.

La cosa strana e che non capisco è che ottengo il comportamento sbagliato
anche se aggiungo l'opzione.

> [...]


> Tuttavia mi chiedo perché tu non abbia organizzato differentemente il
> tuo progetto. Io avrei messo tutto sotto un unico ombrello e avrei
> creato un pacchetto principale che contenga tutti gli altri.


Perchè sono packages separati.
Sono in un unico progetto per convenienza e distutils lo supporta.
Per la cronaca uno dei due package è una applicazione Django, ed ho deciso
di spostare del codice riutilizzabile
fuori da Django ma all'interno dello stesso progetto.

> PS. Manlio che chiede aiuto in lista? Credevo che fosse un evento tanto
> probabile quanto 'random.random() == random.random()'.

Python *è* complesso!

Ciao e grazie
Manlio
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20150805/678f19c7/attachment.html>


Maggiori informazioni sulla lista Python