Come configurare PYTHONPATH personalizzato con VM e PyCharm?


86

Sto usando IntelliJ con il plugin Python e la funzione Remote Interpreter per comunicare con la mia VM Vagrant. Imposta correttamente l'interprete remoto per utilizzare l'interprete della mia VM. Tuttavia, utilizzo un PYTHONPATH personalizzato nella mia VM e vorrei che IntelliJ riconoscesse quel percorso e includesse i moduli in quel percorso durante lo sviluppo.

Come configuro l'interprete remoto di IntelliJ / PyCharm per utilizzare un PYTHONPATH personalizzato sulla VM?


Ho esattamente questo problema, tranne per il fatto che ho molti progetti che seguono uno schema comune e in questo momento (in Emacs) ho impostato tutto dinamicamente. Impostarlo in base al progetto in Pycharm sembra un peso.
AdamC

Risposte:


125

Per PyCharm 5 (o 2016.1), puoi:

  1. selezionare Preferenze> Interprete di progetto
  2. a destra del selettore dell'interprete c'è un pulsante "...", cliccalo
  3. seleziona "altro ..."
  4. fa apparire una nuova finestra "Interpreti di progetto"
  5. seleziona il pulsante più a destra (denominato "mostra percorsi per l'interprete selezionato")
  6. fa apparire una finestra "Percorsi interprete"
  7. fare clic sul pulsante "+"> selezionare la directory PYTHONPATH desiderata (la cartella che contiene i moduli python) e fare clic su OK
  8. Fatto! Divertirsi!

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


Questo è quello che faccio nel mio progetto, così fastidioso. Ho progetto A, progetto comune, test di progetto. Per eseguire unittest sotto il test del progetto, ho aggiunto le dipendenze del progetto in modo che il test del progetto dipenda dal progetto A e dal comune, ma devo ancora aggiungere manualmente le cartelle da A e comuni a PYTHONPATH.
thinkanotherone

Questo aggiungerà la directory al PYTHONPATH globale per quell'interprete, giusto? Non solo il progetto?
Ray

@ Ray sì, sembra che cambierà le impostazioni dell'interprete globale. Ma possiamo usare virtualenv diversi per progetti diversi e impostare PYTHONPATH diversi per loro.
phil

Nota che devi prima impostare l'interprete come interprete del tuo progetto, altrimenti il ​​pulsante più a sinistra è disabilitato
ospider

Su OSX, Cmd + Maiusc + Punto mostra le cartelle nascoste nella finestra di dialogo di selezione (ad esempio / usr), poiché non sembra esserci un modo per digitare solo il percorso.
Flash

83

Le istruzioni per modificare il tuo PYTHONPATH o risolvere i problemi di risoluzione dell'importazione per l'ispezione del codice sono le seguenti:

  1. Apri Preferenze (su un Mac la scorciatoia da tastiera è ⌘,).

Come accedere alle Impostazioni dal menu

  1. Cerca Project Structurenella barra laterale a sinistra sottoProject: Your Project Name

  2. Aggiungi o rimuovi moduli nella barra laterale destra

Impostazioni della struttura del progetto in Pycharm 4.5

EDIT : ho aggiornato questa schermata per PyCharm 4.5


Questo vale ancora? Presumibilmente ho l'ultimo professionista PyCharm ma mi mancano molte di queste categorie ... compresa la struttura del progetto! Ma grazie per aver postato questo !!!
R Claven

1
Ciao, ho aggiornato lo screenshot per PyCharm 4.5, la versione più recente. Sembra che abbiano riorganizzato le impostazioni nella barra laterale.
Bjorn

In realtà ti devo un MASSIMO grazie. Stavo scherzando con le "impostazioni predefinite" invece delle impostazioni del progetto. La tua risposta qui mi ha aiutato a rendermi conto di questo e poi ho risolto molte discrepanze e ha funzionato. GRAZIE!
R Claven

C'è un modo per farlo a livello globale? l'aggiunta di /Library/Python/2.7/site-packages e /usr/local/lib/python2.7/site-packages a ogni progetto che apro fa schifo.
jeremyjjbrown

Sì @jeremyjjbrown, credo che tu possa farlo facendo clic su "Interprete del progetto" e selezionando il percorso dell'interprete che contiene i pacchetti del sito che desideri. Questa domanda era solo una risposta per rendere disponibili pacchetti specifici del progetto per i loro progetti. Puoi anche utilizzare un requirements.txt per aggiungere tutti i tuoi progetti deps in pycharm.
Bjorn

16

Per me la soluzione era andare a

Run > Edit Configuration > Defaults > Python

quindi gestisci il file

  • "Aggiungi radici dei contenuti a PYTHONPATH" e
  • "Aggiungi radice sorgente a PYTHONPATH"

caselle di controllo, nonché l'impostazione del campo "Directory di lavoro".

Se hai impostato le tue configurazioni di esecuzione / debug, potresti voler andare a

Run > Edit Configuration > Python > [Whatever you called your config]

e modificalo lì.

Il mio problema era che volevo che il mio intero repository fosse incluso nel mio progetto PyCharm 2016.2, ma solo una sottocartella era la radice del codice sorgente di Python. L'ho aggiunto come "Source Root" facendo clic con il pulsante destro del mouse sulla cartella

Mark directory as > Source Root

Quindi deseleziona "Aggiungi radice di contenuto a PYTHONPATH" e seleziona "Aggiungi radice di origine a PYTHONPATH" nel menu di configurazione Esegui / Debug. Ho quindi controllato il percorso della cartella facendo:

import sys
logger.info(sys.path)

Questo ha prodotto:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Tuttavia, senza la correzione diceva:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root',                   <-- NOT WANTED
    '/usr/lib/python3.4', 
    '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Il che significa che ho incluso la cartella principale del progetto. Questo ha incasinato il percorso per me.


Grazie, non sono un esperto di Python e mi sono sempre chiesto come dare un'occhiata a quali percorsi di importazione posso raggiungere! (quella sys.pathparte)
Rastikan

Questo non è l'ideale perché richiede l'aggiornamento di ogni configurazione della corsa.
StephenBoesch

@javadba Se vuoi che funzioni per tutte le configurazioni vai Run > Edit Configuration > Templates > Pythoninvece a.
André C. Andersen

@ AndréC.Andersen grazie! Non ho mai guardato in modelli prima.
StephenBoesch

13

Questo è stato fatto con PyCharm Community 2019.1

  1. Vai a Impostazioni progetto impostazioni
  2. Vai a Struttura del progetto e fai clic con il pulsante destro del mouse sulla directory che desideri aggiungere e fai clic su "Fonti" Struttura del progetto: aggiungi fonti

Questo dovrebbe aggiungere la directory al tuo percorso python Struttura del progetto - dopo aver aggiunto le fonti


3

Un aggiornamento alla risposta corretta phil fornita, per le versioni più recenti di Pycharm (es. 2019.2).

Vai su File> Impostazioni e trova il tuo progetto, quindi seleziona Interprete del progetto . Ora fai clic sul pulsante con un ingranaggio a destra dell'interprete del progetto selezionato (prima era un ... ).

inserisci qui la descrizione dell'immagine

Dal menu a tendina selezionare Mostra tutto ... e nella finestra di dialogo che si apre fare clic sull'icona con una cartella e due sottocartelle.

inserisci qui la descrizione dell'immagine

Ti viene presentata una finestra di dialogo con i percorsi correnti dell'interprete, fai clic su + per aggiungerne uno in più.


GRAZIE!!! Un collega e io abbiamo lottato per impostare il suo ambiente in modo che corrispondesse al mio, e non ricordo di aver fatto questi passaggi, ma c'è un percorso importante che ho (che dice anche "aggiunto dall'utente").
Drarok

2

Nella mia esperienza, l'utilizzo di una variabile PYTHONPATH di solito è l'approccio sbagliato, perché non funziona bene con VENV su Windows. PYTHON al caricamento preparerà il percorso anteponendo PYTHONPATH al percorso, il che può comportare il fatto che Venv, preparato con cura, recuperi preferenzialmente i pacchetti del sito globale.

Invece di utilizzare il percorso PYTHON, includi un file pythonpath.pth nella directory dei pacchetti del sito pertinente (anche se fai attenzione ai pitoni personalizzati occasionalmente li cercano in posizioni diverse, ad esempio, cerca con entusiasmo nella stessa directory di python.exe per i suoi file .pth) con ogni ambiente virtuale. Questo agirà come un PYTHONPATH solo che sarà specifico per l'installazione di python, quindi puoi averne uno separato per ogni installazione / ambiente di python. Pycharm si integra perfettamente con VENV se vai a yse Python di VENV come installazione di Python.

Vedi ad esempio questa domanda SO per maggiori dettagli sui file .pth ....



0

Bene, puoi farlo andando alla finestra di dialogo dell'interprete. Fai clic sull'interprete che stai utilizzando e sotto di esso dovresti vedere due schede, una chiamata Pacchetti e l'altra chiamata Percorso.

Fare clic su Path e aggiungere il percorso della VM ad esso.


Quando clicco sull'interprete remoto e aggiungo un Classpath, si lamenta quando specifico una directory remota (come /home/vagrant/mydir). Ho bisogno di precedere il percorso con qualcosa? La mia interfaccia è leggermente diversa poiché sto usando IntelliJ con il plugin Python e non PyCharm se questo aiuta.
baalexander

1
Bene, puoi semplicemente andare all'interprete SSH e caricare le cose dal file vagrant, è un'opzione lì.
Giochi Brainiac


0

In Intellij v2017.2 puoi andare a:

run > edit configurations > click ... next to the field 'Environment variables' > click the green + sign

Nome = PYTHONPATH

valore = your_python_path

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.