2011-01-07 58 views
94

我對PyDev和Python很新,儘管我已經使用了Eclipse for Java。我正在嘗試通過一些Dive Into Python的例子,這感覺就像一個極其微不足道的問題,變得非常煩人。我正在使用Ubuntu Linux 10.04。PyDev和Eclipse未解決的導入問題

我希望能夠使用該文件odbchelper.py,它位於目錄/Desktop/Python_Tutorials/diveintopython/py

下面是我在我的PyDev/Eclipse項目工作在我example.py文件:

import sys 
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py") 

這工作得很好,但我想我的下一行代碼是:

import odbchelper 

,這將導致一個懸而未決的導入錯誤每次。我已經將__init__.py文件添加到幾乎每個可能的目錄中,並且對任何內容都沒有幫助。我已經嘗試將__init__.py文件一次添加到項目位置和odbchelper.py文件之間的各種級別的目錄中,我也嘗試將__init__.py文件同時添加到所有目錄中。兩者都不起作用。

所有我想要做的就是在一些其他目錄裏有一個項目,說/Desktop/MyStuff/Project,其中我有example.py ......然後從example.py我想從/Desktop/Python_Tutorials/diveintopython/py/

導入odbchelper.py

每個留言板響應我都可以找到只是說使用sys.path.append()函數將此目錄添加到我的路徑,然後導入它......但這正是我在我的代碼中所做的,它不工作。

我也曾嘗試按Ctrl - 招取消錯誤消息,但該程序仍無法正常工作。我收到一個錯誤,ImportError: No module named odbchelper。所以顯然沒有獲得路徑,或者存在一些問題,即我添加__init__.py文件的所有排列組合都錯過了。

這件事很簡單...從我的機器上某處存在的某個文件中調用某些東西需要做很多工作,這非常令人沮喪。

+0

確保的情況下(大寫)是在您的PYTHONPATH所有必要的目錄正確。 – 2011-11-18 01:51:22

+0

我知道這已經被回答了,但是我正在爲`grp`模塊導入未解析的導入。我只是將它添加到Preferences> PyDev> Interpreters> Python> Forced Builtins中的`builtins`列表中,並且仍然可以自動完成該模塊。 – user1040495 2014-02-08 19:47:32

回答

123

在您的pydev項目的屬性中,有一個名爲「PyDev - PYTHONPATH」的窗格,其中有一個名爲「External Libraries」的子窗格。您可以將源文件夾(具有__init__.py的任何文件夾)添加到使用該窗格的路徑中。您的項目代碼將能夠從這些源文件夾中導入模塊。

+4

如果正確設置了pydev屬性,則不需要混淆「sys.path」 – Velociraptors 2011-01-08 05:14:53

+6

對於其他搜索者,我想添加我的經驗-Windows 7,Python 2.7.1,Eclipse 3.6.2,PyDev,Pyschopg(Python 2.7 amd64)。 Psychopg的安裝到C:\ Python27 \ Lib \ site-packages \ psycopg2(在Python 2.7安裝下)。我首先使用__init__.py引用該文件夾和所有子文件夾,但發現我也必須引用site_packages文件夾。 (http://stackoverflow.com/questions/2983088/unresolved-import-models)(http://stackoverflow.com/questions/4631377/unresolved-import-issues-with-pydev-and-eclipse) – MaasSql 2011-04-22 13:25:36

+80

另一點注意 - Eclipse可能需要重新啓動才能工作。這似乎只能通過「文件 - >重新啓動」而不是手動關閉和重新打開。 – soulBit 2011-05-11 14:51:28

40

我剛剛將一個WXWindows項目升級到了Python 2.7,並且沒有讓Pydev識別新解釋器的麻煩。做了與上面配置解釋器相同的事情,重新安裝了Eclipse和Pydev。以爲Python的某些部分一定是腐敗的,所以我又重新安裝了一切。 Arghh!關閉並重新打開該項目,並在所有這些更改之間重新啓動Eclipse。

最後注意到您可以通過右鍵單擊項目來「刪除PyDev項目配置」。然後它可以再次變成一個PyDev項目,現在它就像金子一樣好!

14

我修復了我的pythonpath,當我通過控制檯導入東西時,所有東西都很花哨,但所有這些先前未解析的導入仍然在我的代碼中標記爲錯誤,無論重新啓動eclipse或刷新/清理項目多少次。

我右鍵單擊項目 - > Pydev->刪除錯誤標記,它擺脫了這個問題。別擔心,如果您的代碼包含實際的錯誤,他們將被重新標記。

1

有解決這個問題的方法有兩種:

  • 從「Python解釋」刪除Python解釋器,然後重新添加。
  • 或者只是在項目中使用的解釋器中添加庫文件夾,在我使用「bottle」的情況下,我添加的文件夾是「c:\ Python33 \ Lib \ site-packages \ bottle- 0.11.6-py3.3.egg「

現在我看不到錯誤了,並且代碼完成功能也適用於」bottle「。

1

我正在運行Eclipse 4.2.0(Juno)和PyDev 2.8.1,並將lib安裝到我的站點包路徑時遇到了此問題。根據這太問題:

Pydev and *.pyc Files

...有一個與PyDev的和PYC文件的問題。在我嘗試引用的特定庫的情況下,所有交付的是pyc文件。

這裏就是我做來解決這個:

  1. https://github.com/Mysterie/uncompyle2
  2. 運行uncompyle2安裝uncompyle2反對在站點包lib中* pyc文件。例如:

    uncompyle2 -r -o/TMP /路徑/到/站點包/ lib中

  3. 重命名所得* .pyc_dis從uncompyle2產生爲*的.py
  4. 移動/複製這些文件*。 PY文件到站點包路徑
  5. 在Eclipse中,選擇File>重新啓動

尚未解決的導入錯誤有關pyc文件現在應該消失。

7

項目 - >屬性 - > pydev-pythonpath - >外部庫 - >添加源文件夾,添加項目的PARENT FOLDER。然後重新啓動eclipse。

4

這裏是我(通過soulBit sugested)什麼工作:

1) Restart using restart from the file menu 
2) Once it started again, manually close and open it. 

這是有史以來最簡單的解決方案,它完全消除煩人的事。

0

之後,在我看來,將解決這個問題

  1. 添加初始化。py到您的「〜/ Desktop/Python_Tutorials/diveintopython/py」文件夾
  2. 轉到窗口 - >首選項 - > PyDev - >解釋器 - > Python解釋器來刪除您的Python解釋器設置(原因是因爲PyDev無法自動刷新對任何系統PythonPath的任何更新)
  3. 在解釋器中添加與以前相同的細節(這將刷新您的Python解釋器設置並更新到您的PythonPath)
  4. 終於自「〜/ Desktop/Python_Tutorials/diveintopython/py「文件夾不是標準PythonPath,您需要將其添加進去。有兩種方法可以做到這一點:

a。根據大衛德國人的建議。但是,這僅適用於您在 中的特定項目b。在窗口 - >首選項 - > PyDev - >解釋器 - > Python解釋器 - >庫子選項卡 - > NewFolder中添加「〜/ Desktop/Python_Tutorials/diveintopython/py」

Hope它有助於。

31

我使用eclipse kepler 4.3,PyDev 3.9.2和我在我的ubuntu 14.04上遇到過同樣的問題。我嘗試了幾個小時,並且花費了大部分時間,但徒勞無功。然後我嘗試這是偉大如下:

  • 選擇項目 - > RightClick->的PyDev - >刪除的PyDev項目配置
  • 文件 - >重啓

我認爲,我使用Python 2.7作爲解釋器,但它不起作用。

-1
KD.py 

class A: 
a=10; 

KD2.py 
from com.jbk.KD import A; 
class B: 
    b=120; 

aa=A(); 
print(aa.a) 

這工作完全文件對我來說

另一個例子是

main.py 
======= 
from com.jbk.scenarios.objectcreation.settings import _init 
from com.jbk.scenarios.objectcreation.subfile import stuff 

_init(); 
stuff(); 

settings.py 
========== 
def _init(): 
print("kiran") 


subfile.py 
========== 
def stuff(): 
print("asasas")