我用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有什么不同吗?在
干杯
Eclipse看到了ctypes模块,只是ctypes找不到DLL。在
原因是eclipse不一定使用系统的环境变量。要解决这个问题,您需要在Eclipse中设置LD_LIBRARY_路径。在
第1步。找出哪里“libimf.so公司“在你的系统中。在Linux上,可以使用:
在终点站。那就给你目录了。例如,假设文件位于“/home/sweetlibraries”/libimf.so公司" . 在
第二步。在Eclipse*中设置LD_LIBRARY_PATH:
现在,当你运行它时,它应该可以工作。如果没有,请确保使用正确的“运行配置”。单击绿色大箭头旁边的小向下箭头。并选择配置名称(例如“project_name python_file_py.py名称"). 在
*我使用的是LiClipse,但我认为菜单结构应该是相同的。在
如果还没有,可能需要将其添加到Eclipse中的PYTHONPATH中。在
窗口->首选项->PyDev->解释器-Python
添加您的python.exe或者运行autoconfig,然后添加所需的库。在
相关问题 更多 >
编程相关推荐