Eclipse Pydev没有加载外部模块,终端工作正常

时间:2012-10-24 15:47:38

标签: python eclipse pydev

我正在和Pydev一起运行Eclipse Juno。我编译了一个使用ctypes导入C库的egg包。它在终端上运行良好,但是从Eclipse内部运行时我得到了

/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的方式有什么不同?

干杯

2 个答案:

答案 0 :(得分:1)

如果您还没有,可能需要将其添加到Eclipse中的PYTHONPATH。

窗口 - &gt;偏好 - &gt; PyDev - &gt;口译员 - Python

添加python.exe或运行autoconfig,然后添加所需的库。

答案 1 :(得分:1)

Eclipse正在看ctypes模块,只是ctypes无法找到DLL。

原因是eclipse不一定使用系统的环境变量。要解决此问题,您需要在Eclipse中设置LD_LIBRARY_PATH。

步骤1.找出系统中“libimf.so”的位置。在Linux上,您可以使用:

 locate libimf.so

在终端。那应该给你目录。例如,假设该文件位于“/home/sweetlibraries/libimf.so”。

步骤2.在Eclipse *中设置LD_LIBRARY_PATH:

  • 右键单击您正在运行的python文件,该文件会出现此错误。
  • 点击“属性”
  • 点击“运行/调试设置”
  • 您应该看到该文件的一些配置。对我来说,它是“project_name python_file_name.py”。选择它。
  • 点击“环境”
  • 点击“新建”
  • 将名称设为“LD_LIBRARY_PATH”
  • 将值设置为找到libimf.so的位置,例如“/家/ sweetlibraries /”
  • 点击“确定”退出所有菜单。

现在当你运行它时,它应该工作。如果没有,请确保使用正确的“运行配置”。单击大的绿色“运行”箭头旁边的小向下箭头。并选择配置名称(例如“project_name python_file_name.py”)。

*我正在使用LiClipse,但我认为菜单结构应该相同。