2016-02-18 14 views
7

In Visual Studio con PTVS ho due progetti separati Python, uno contiene un file di origine Python denominato lib.py da utilizzare come una libreria di funzioni e l'altro è un main che usa le funzioni nella libreria. Sto utilizzando un import economico nel principale per fare riferimento alle funzioni nel progetto di libreria, ma ottenere il seguente errore:PTV: Come fare riferimento o utilizzare il codice sorgente Python in un progetto da un secondo progetto

No module named lib

ho principalmente programma in F # utilizzando Visual Studio così la mia mentalità è l'aggiunta di riferimenti ad altri progetti .NET.

Come penso nel modo Pythonic per realizzare questo?

risposta

14

Python non utilizza riferimenti come .NET ma utilizza un percorso che viene cercato. Il percorso di ricerca deve essere modificato per includere la directory contenente il file sorgente. Vedi: The Module Search Path

Guardando il progetto in Visual Studio con Solution Explorer vengono visualizzati i percorsi di ricerca per ciascun progetto.

enter image description here

Per modificare il percorso di ricerca:

Ottenere la directory per il file Python che contiene il codice sorgente da importare.

ad es. lib.py

In Esplora soluzioni fare clic destro sul lib.py e selezionare Copy Path

enter image description here

Ora per il progetto che importare il modulo
esempio ConsoleDriver_Python

Fare clic destro dei percorsi di ricerca e selezionare Aggiungi cartella alla ricerca del percorso ...

enter image description here

che mostrano una cartella dialogo

enter image description here

Fare clic destro e incolla nel percorso da gli appunti. Inoltre, cambialo in una directory rimuovendo il nome del file.

enter image description here

Fare clic su Seleziona cartella

Ora controllare il progetto per assicurarsi percorso di ricerca è stato aggiornato.

enter image description here

L'errore di importazione dovrebbero ora essere cancellato.

+1

Questa è una risposta eccezionale! Buon lavoro! – Del

+0

Di interesse: [PTVS - Progetti - Percorso di ricerca] (https://github.com/Microsoft/PTVS/wiki/Projects#search-paths) Documentazione ufficiale sui percorsi di ricerca PTVS. –

+0

Il collegamento nel commento sopra è ora morto e reindirizza a [Progetti Python] (https://docs.microsoft.com/en-us/visualstudio/python/python-projects). Dopo aver esaminato la nuova pagina, potrebbe esserci un modo diverso per raggiungere questo obiettivo mentre il PTVS si sta evolvendo. Quando avrò tempo, ho intenzione di rivedere la risposta, ma in questo momento sono nel profondo del collo a Prolog. –

3

Volevo solo aggiungere il sotto, oltre alla risposta verificata, per uno scenario molto specifico.

Mi è stato chiesto di recente di risolvere lo stesso problema riscontrato dall'OP per una macchina da lavoro, che di recente aveva migrato gli account utente in un nuovo dominio.

Setup: di Visual Studio 2013 PTVS 2.2.30718 Anaconda 3.5

In sostanza, Anaconda è stato installato per localmachine/UtenteA.

Dopo aver migrato gli utenti nel nuovo dominio (nuovo dominio/UtenteA), l'ambiente Python doveva essere aggiornato da VS2013, facendo clic su Visualizza> Altre finestre> Ambienti Python.

Una volta impostato, gli script Python funzionerebbero come previsto, anche se nessuno dei riferimenti alla cartella di ricerca funzionerebbe. Furono quindi rimossi e riaggiunti, ma senza risultato.

Sono state provate varie altre cose, tra cui la creazione di progetti totalmente nuovi e il loro collegamento utilizzando i percorsi di ricerca, ma senza risultati.

L'unica cosa che ha risolto il problema era reinstallare l'ambiente Python (nel mio caso Anaconda3) all'esterno di un account utente (facendo clic sull'opzione "per tutti gli utenti, utilizzando i privilegi di amministratore" durante l'installazione).

Quindi ho riavviato, rimosso e riaggiunto le cartelle di ricerca e il python ha funzionato come previsto, inclusi tutti i percorsi di ricerca.

Mi auguro che aiuta qualcuno, come ho appena sprecato ore risolverlo ...

D :)

+0

Bello sapere. Grazie. –

+0

Buona scoperta. Puntatore finale su questo problema: dopo aver reinstallato Anaconda con i privilegi di amministratore, è comunque necessario riavviare il computer per Windows per ordinare tutto e per VS regolare correttamente il percorso di ricerca. –

0

o si può fare questo nel codice con il seguente:

sys.path.append("search path") 

Così che il codice può essere eseguito all'esterno dell'IDE.

+0

Normalmente inviamo automaticamente qualsiasi risposta ragionevole a una domanda. Mentre vedo la tua risposta come un'opzione valida, sono riluttante a votare perché è corretto come 'sys.path.insert()' potrebbe essere migliore, ma ancora di più, vedo le informazioni che dai come già presenti a SO e che questo dovrebbe essere un commento con un link. Capisco che sia una buona opzione che gli altri sappiano, quindi non lo voterò. –

Problemi correlati