加载外部PyFin模块不工作

2024-10-01 11:33:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Pydev运行Eclipse Juno。我编译了一个egg包,它使用ctypes导入一个C库。它在终端上运行得很好,但是当从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有什么不同吗?在

干杯


Tags: inpyselfsrc终端initegglib
2条回答

Eclipse看到了ctypes模块,只是ctypes找不到DLL。在

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

第1步。找出哪里“libimf.so公司“在你的系统中。在Linux上,可以使用:

 locate libimf.so

在终点站。那就给你目录了。例如,假设文件位于“/home/sweetlibraries”/libimf.so公司" . 在

第二步。在Eclipse*中设置LD_LIBRARY_PATH:

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

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

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

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

窗口->首选项->PyDev->解释器-Python

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

相关问题 更多 >