2012-10-24 48 views
2

我正在Pydev運行Eclipse Juno。我編譯了一個使用ctypes導入C庫的蛋包。它工作正常,從終端,而是從Eclipse內運行時,我得到Eclipse Pydev沒有加載外部模塊,終端工作正常

/usr/local/lib/python2.7/dist-packages/PhreeqPy-0.1.0-py2.7.egg/phreeqpy/iphreeqc 
Traceback (most recent call last): 
    File "/src/pywork/fddarcy/src/fddarcy.py", line 75, in <module> 
    sys.exit(main()) 
    File "/src/pywork/fddarcy/src/fddarcy.py", line 35, in main 
    freak =phreeqc_mod.IPhreeqc()  
    File "/usr/local/lib/python2.7/dist-packages/PhreeqPy-0.1.0-py2.7.egg/phreeqpy/iphreeqc/phreeqc_dll.py", line 28, in __init__ 
    self.phreeqc = ctypes.cdll.LoadLibrary(dll_path) 
    File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary 
    return self._dlltype(name) 
    File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__ 
    self._handle = _dlopen(self._name, mode) 
OSError: libimf.so: cannot open shared object file: No such file or directory 

重裝在Pydev的Eclipse中的所有庫導入模塊時甚至不給錯誤後,但它不會加載模塊。爲了更加清楚,從終端一切正常。

編輯:我認爲問題是在Eclipse調用python的方式。它與從終端調用python的方式有什麼不同嗎?

乾杯

回答

1

如果你還沒有,你可能需要將其添加到Eclipse中的PYTHONPATH。

窗口 - >首選項 - >的PyDev - >解釋器 - Python的

添加您的python.exe或運行自動配置,然後添加你需要的庫。

+0

謝謝,但已經做到了。所有其他的Python程序沒有這個模塊工作正常。 – Ivan

1

Eclipse正在看到ctypes模塊,它只是ctypes找不到DLL。

這樣做的原因是eclipse不一定會使用您系統的環境變量。爲了解決這個問題,你需要在Eclipse中設置LD_LIBRARY_PATH。

第1步。找出系統中「libimf.so」的位置。在Linux上,您可以使用:

locate libimf.so 

在終端中。這應該給你的目錄。例如,說該文件位於「/home/sweetlibraries/libimf.so」。在Eclipse *

步驟2.設置LD_LIBRARY_PATH:

  • 上你正在運行的Python文件點擊右鍵給出了這樣的錯誤。
  • 單擊「屬性」
  • 點擊「運行/調試設置」
  • 你應該可以看到該文件的一些配置。對我來說,它是「project_name python_file_name.py」。選擇它。
  • 點擊 「環境」
  • 單擊 「新建」
  • 集名稱爲 「LD_LIBRARY_PATH」
  • 設定值,無論你發現libimf.so,例如「/ home/sweetlibraries /」
  • 點擊「OK」退出所有菜單。

現在,當你運行它,它應該工作。如果沒有,請確保您使用正確的「運行配置」。點擊大的綠色「運行」箭頭旁邊的向下箭頭。並選擇配置名稱(例如「project_name python_file_name.py」)。

*我使用LiClipse,但我認爲菜單結構應該是相同的。