2012-12-27 6 views
14

Sto usando PyDev per Eclipse come IDE e pip come strumento di gestione dei pacchetti, eseguendo virtualenv.PyDev per Eclipse - Risolvi le dipendenze di Python (importazioni non risolte)

Ogni volta che desidero utilizzare/includere alcune nuove librerie o nuove dipendenze nel mio progetto, le aggiungo al pip - richiede il file. Le dipendenze vengono installate nel mio ambiente virtuale senza problemi dopo l'esecuzione di pip install -r pip-requires.

mio Env:

  • Ubuntu 12.04
  • pydev per Eclipse 2.7.1.2012100913
  • Python 2.7.3
  • Eclipse Indigo

Aggiornamento: mio Setup Pydev:

enter image description here

Domande:

  • eclisse/pydev sa nulla le nuove librerie che viene aggiunto nel mio ENV virtuale. Ho dovuto aggiungere manualmente la cartella sorgente di .egg nel progetto PYTHONPATH di eclipse uno alla volta per risolvere tutte le importazioni non risolte che erano molto fastidiose! Le dipendenze Python possono essere risolte in un modo più semplice?

Aggiornamento:

  • ho scoperto che se uso ENV virtuale Env/bin/python come l'interprete come lo screenshot indica, alcuni dei moduli di base non vengono risolti in Eclipse, ad esempio. import copy, import json ecc. Dovrei usare come interprete il valore predefinito /usr/bin/python e aggiungere semplicemente virtual env site-package a PYTHONPATH? in modo che io possa risolvere sia le librerie Python standard (ad esempio json) sia le mie dipendenze di progetto personali?
+0

Aggiorna la mia risposta. Per favore dai un'occhiata. – jinghli

+0

Grazie mille Jinghli, ora funziona. – Shengjie

risposta

13

Assicurati che il tuo sistema PYTHONPATH includa la cartella dei pacchetti del sito quando scegli l'interprete python dal tuo virtualenv. Proprio come l'istantanea. enter image description here

Quindi non è necessario aggiungerli uno a uno in PYTHONPATH. Avrai bisogno di riavviare eclissi (l'aggiornamento non funziona). Verranno aggiunti nuovi modelli.

Aggiornamento: Ho controllato il PYTHONPATH nel virtualenv. Ho trovato che ci sono altri percorsi in sys.path. Sono le ubicazioni installate di default in python. Questo percorso include i modelli di base, ad esempio copy e json.

PS: Il mio ambiente è Max OSX 10.8. Si prega di verificare l'uscita del vostro propria piattaforma per print sys.path

/Users/username/.virtualenvs/test/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg 
/Users/username/.virtualenvs/test/lib/python2.7/site-packages/pip-1.1-py2.7.egg 
/Users/username/.virtualenvs/test/lib/python27.zip 
/Users/username/.virtualenvs/test/lib/python2.7 
/Users/username/.virtualenvs/test/lib/python2.7/plat-darwin 
/Users/username/.virtualenvs/test/lib/python2.7/plat-mac 
/Users/username/.virtualenvs/test/lib/python2.7/plat-mac/lib-scriptpackages 
/Users/username/.virtualenvs/test/lib/python2.7/lib-tk 
/Users/username/.virtualenvs/test/lib/python2.7/lib-old 
/Users/username/.virtualenvs/test/lib/python2.7/lib-dynload 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac 
/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages 
/Users/username/.virtualenvs/test/lib/python2.7/site-packages 

Penso che questo è il requisito di virtualenv. È necessario aggiungere questi percorsi nel sistema pydev PYTHONPATH. Quindi è possibile utilizzare questi moduli di base.

+0

quando uso l'interprete virutal come interprete, sembra che manchi qualche lib di base per python, ad es. copia, json non sono più risolti. Ma ho avuto modo di usarlo usando l'interprete di default: /usr/bin/python2.7, e aggiungo i miei pacchetti di siti env virtuali in PYTHONPATH come screenshot. – Shengjie

+0

Potresti condividere con noi le tue impostazioni tramite screenshot? Se le tue impostazioni sono le mie, credo che dovrebbe funzionare, è werid. – jinghli

+0

Non penso che devi fare virtualenv ... lui è solo in questo esempio –

12

Dalle tue domande ho capito che stai aggiungendo manualmente i pacchetti Python Egg al percorso. Invece di fare questo, puoi semplicemente andare alla finestra Impostazioni progetto, quindi aprire "PyDev - PYTHONPATH", navigare nel pannello chiamato "Librerie esterne" e aggiungere la cartella site-packages intera del tuo ambiente virtuale, di solito /path/to/virtualenv/lib/site-packages/. In questo modo non aggiungerai le uova una alla volta per ogni pacchetto. Quando si installa un nuovo pacchetto, basta andare alla finestra di Eclipse e se l'importazione non è ancora stata risolta, selezionare il progetto e premere la chiave F5, per aggiornare il progetto.

Speriamo che questo dovrebbe funzionare per voi. In bocca al lupo.

+0

Sì, questo è ciò che è necessario. Ho avuto lo stesso problema con PIL e pip –

+0

così come non ha funzionato ancora per me, ho dovuto aggiungere /home/myname/virt-env/lib/python2.7/site-packages/happybase-0.4-py2.7. egg in External Libraries per essere in grado di risolverlo. Solo /home/myname/virt-env/lib/python2.7/site-packages non funziona per me. Mi sto perdendo qualcosa qui? – Shengjie

+0

Hai provato ad aggiornare il progetto usando 'F5'? –

3

Questo è come vado sulla configurazione PyDev con un virtualenv:

  1. Creare una virtualenv a /home/anshumanb/.virtualenvs/myvenv
  2. In Eclipse, Finestra> Preferenze> PyDev> Interprete - Python, aggiungo un nuovo interprete. Per l'eseguibile interprete, io punto a Python del virtualenv cioè /home/anshumanb/.virtualenvs/myenv/bin/python
  3. Nei "cartelle Select da aggiungere al PYTHONPATH" schermo, ho selezionare tutti i percorsi che iniziano con /home/anshumanb/.virtualenvs/myvenv E
    /usr/lib/python2.7
    /usr/lib/python2.7/plat-linux2
    /usr/lib/python2.7/lib-tk e niente altro.
    (Vedi this del motivo per cui seleziono /usr/lib/python2.7, /usr/lib/python2.7/plat-linux2 e /usr/lib/python2.7/lib-tk)
  4. Quando sono tornato al Interprete - schermo Python nelle preferenze di Eclipse, mi ha colpito Applica quindi OK

Dopo questo, ogni volta che installo qualsiasi pacchetto nel virtualenv, torno allo schermo Interpreter - Python, premo Applica, seleziona l'interprete che punta al mio virtualenv (e quello che ho appena installato i pacchetti in) e premo Applica. PyDev quindi preleva tutti i nuovi pacchetti installati nel virtualenv.

Nota: sto usando PyDev 2.7.1 e Python 2.7.3 ma su una scatola Arch Linux con Eclipse 4.2.1. Ma non penso che farà alcuna differenza.