2012-12-27 42 views
14

我使用的PyDev用於Eclipse作爲我的IDE和PIP作爲我的包管理工具,運行的virtualenv。的PyDev爲Eclipse - 解決Python的依賴關係(未解決進口)

每當我想在項目中使用/包含一些新的庫或新的依賴關係時,我將它們添加到pip-requires文件中。在運行pip install -r pip-requires後,依賴關係安裝在我的虛擬環境中,沒有任何問題。

我的信封

  • 的Ubuntu 12.04
  • 的PyDev爲Eclipse 2.7.1.2012100913
  • 的Python 2.7.3
  • Eclipse的靛藍

更新:我的Pydev的設置

enter image description here

問題:

  • 日食/ PyDev的一無所知的我的虛擬ENV添加新庫。我必須手動將.egg源文件夾添加到eclipse項目的PYTHONPATH中,以便解決所有未解決的導入操作,這非常煩人! python依賴關係能否以更簡單的方式解決?

更新:

  • 我發現,如果我使用虛擬ENV Env/bin/python作爲解釋器的截圖顯示,一些基本的模塊也沒有在Eclipse中解決,如。 import copy, import json等我應該使用默認/usr/bin/python作爲解釋器,只需將虛擬env site-package添加到PYTHONPATH?這樣我就可以解析標準的Python庫(例如json)和我自己的項目依賴關係了?
+0

更新我的答案。請看一下。 – jinghli

+0

非常感謝Jinghli,它現在有效。 – Shengjie

回答

13

確保您的系統PYTHONPATH包括站點包文件夾,當你選擇從你的virtualenv Python解釋器。就像快照。 enter image description here

那麼你不需要一個將它們添加到一個PYTHONPATH。您將需要重新啓動eclipse(刷新不起作用)。新模型將被添加。

更新: 我在virtualenv中檢查PYTHONPATH。我發現sys.path中還有一些其他路徑。他們是系統默認的python安裝位置。這些路徑包括基本型號,如copyjson

PS:我的環境是Max OSX 10.8。通過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 

請檢查您自己的平臺的輸出,我認爲這是virtualenv中的要求。您需要將這些路徑添加到pydev系統PYTHONPATH中。然後你可以使用這些基本模塊。

+0

當我使用virutal env作爲解釋器時,它好像缺少一些基本的python lib,例如。副本,json不再解決。但是我確實通過使用默認解釋器:/usr/bin/python2.7獲得了方法,並在截圖中將我的虛擬env站點包添加到PYTHONPATH中。 – Shengjie

+0

你能通過截圖與我們分享你的設置嗎?如果您的設置與我的設置一樣,我相信它應該可以工作,但它是可靠的。 – jinghli

+0

我不認爲你必須做virtualenv ...他只是在這個例子中 –

12

從你的問題,我的理解,你手動添加Python的蛋包的路徑。相反,這樣做的,你可以去項目設置窗口,然後打開「的PyDev - PYTHONPATH」,定位到「外部庫」面板,並添加你的虛擬環境中,通常/path/to/virtualenv/lib/site-packages/整個site-packages文件夾。這樣你不會爲每個軟件包逐個添加雞蛋。安裝新軟件包時,只需轉至Eclipse窗口,如果導入仍未解決,請選擇該項目並按F5鍵以刷新該項目。

希望這應該適合你。祝你好運。

+0

是的,這是需要的。與PIL和pip –

+0

有同樣的問題,所以它仍然不適用於我,我必須添加/home/myname/virt-env/lib/python2.7/site-packages/happybase-0.4-py2.7。外部圖書館的蛋能夠解決它。只是/home/myname/virt-env/lib/python2.7/site-packages不適用於我。我在這裏錯過了什麼嗎? – Shengjie

+0

您是否嘗試使用'F5'刷新項目? –

3

這是我如何去用的virtualenv建立的PyDev:

  1. /home/anshumanb/.virtualenvs/myvenv
  2. 在Eclipse中創建的virtualenv,窗口>首選項>的PyDev>解釋 - Python中,我添加了一個新的解釋。爲了解釋可執行文件,我把它指向的virtualenv的Python的即/home/anshumanb/.virtualenvs/myenv/bin/python
  3. 在「選擇文件夾添加到PYTHONPATH」屏幕上,我選擇所有的路徑開始/home/anshumanb/.virtualenvs/myvenv
    /usr/lib/python2.7
    /usr/lib/python2.7/plat-linux2
    /usr/lib/python2.7/lib-tk並沒有什麼其他。
    (爲什麼我選擇/usr/lib/python2.7/usr/lib/python2.7/plat-linux2/usr/lib/python2.7/lib-tkthis
  4. 當我回到瞭解釋 - Python的屏幕在Eclipse的喜好,我打了應用,然後確定

在此之後,每當我安裝任何包裝到virtualenv中,我回到Interpreter - Python屏幕,點擊Apply,選擇指向我的virtualenv的解釋器(以及我剛剛安裝包的解釋器),然後點擊Apply。然後PyDev拿起安裝在virtualenv中的任何新軟件包。

注:我使用的PyDev 2.7.1和Python 2.7.3,而是基於一個Arch Linux的盒子與Eclipse 4.2.1。但我認爲這不會有什麼區別。