AVJ*_*AVJ 4 dependencies matlab-compiler python-3.6
我正在使用Matlab R2018a使用64位的Ubuntu 16.04并使用Python 3.6(并且安装了3.5和2.7但未使用).
我有一个Matlab代码,它试图通过使用和遵循Matlab Compiler SDK for Python上的指令从Python调用.我按照这个链接上的所有说明来创建我的Matlab-Python包装器(web)安装程序并安装它们,我按照安装程序的建议更改了LD_LIBRARY_PATH.我已经尝试了他们已经展示的MagicSquarePkg示例,并且它在这种方法中运行良好.但是MagicSquarePkg没有使用任何Matlab工具箱功能; 我的代码呢.在我使用我的代码执行此过程后,我收到以下错误:
<username>:~/MatlabWorkspace/rs_cuboid_measure_script_python_attempt2/for_testing$ python3.6
Python 3.6.5 (default, Mar 29 2018, 03:28:50)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import rs_cuboid_measure_script_python *my Matlab module*
Exception caught during initialization of Python interface. Details:
/usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0: undefined symbol:
XML_SetHashSalt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<$HOME>/MatlabWorkspace/rs_cuboid_measure_script_python_attempt2/for_testing/rs_cuboid_measure_script_python/__init__.py", line 283, in <module>
_pir.import_cppext()
File "<$HOME>/MatlabWorkspace/rs_cuboid_measure_script_python_attempt2/for_testing/rs_cuboid_measure_script_python/__init__.py", line 276, in import_cppext
self.cppext_handle = importlib.import_module("matlabruntimeforpython" + self.interpreter_version)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ImportError: /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0: undefined symbol: XML_SetHashSalt
Run Code Online (Sandbox Code Playgroud)
这里的rs_cuboid_measure_script_python是我的Matlab模块,在Matlab中运行时效果很好.
我在各种论坛上看了以下相关答案:
1)https://www.mathworks.com/matlabcentral/answers/267099-matlab-s-python-engine-crashes-minidom(最相关)
如果我按照这个链接的建议和
import pyexpat
Run Code Online (Sandbox Code Playgroud)
在导入我的模块之前,我得到一个段错误:
>>> import pyexpat
>>> import rs_cuboid_measure_script_python
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)
2)Python应用程序崩溃,错误"ImportError:pyexpat.x86_64-linux-gnu.so:undefined symbol:XML_SetHashSalt"
基于此链接,依赖项是:
<username>:/usr/lib/x86_64-linux-gnu$ ldd libpython3.6m.so.1.0
linux-vdso.so.1 => (0x00007ffed491a000)
libexpat.so.1 => /usr/local/MATLAB/MATLAB_Runtime/v94/bin/glnxa64/libexpat.so.1 (0x00007f90cb2b4000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f90cb09a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f90cae7d000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f90cac79000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f90caa76000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f90ca76d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f90ca3a3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f90cbbd1000)
Run Code Online (Sandbox Code Playgroud)
3)根据Mathworks支持的建议,我按照这个链接上的说明树脂安装了python 但没有改变任何东西.我得到与上面相同的错误
其他一些可能相关或不相关的链接:
5)https://github.com/sqlmapproject/sqlmap/issues/2194 注意:我已将LD_LIBRARY_PATH变量更改为:
:~$ echo $LD_LIBRARY_PATH
:/usr/local/MATLAB/MATLAB_Runtime/v94/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v94/bin/glnxa64/:/usr/local/MATLAB/MATLAB_Runtime/v94/sys/os/glnxa64/
Run Code Online (Sandbox Code Playgroud)
基于Matlab编译器SDK网站上给出的说明 (注意:正确的路径不是链接上的路径,而是上面控制台输出上的路径确认我的Mathworks支持).
6)https://github.com/opencv/opencv/issues/5445
:/usr/lib/x86_64-linux-gnu$ strings libpython3.6m.so.1.0 | grep Salt
XML_SetHashSalt
Run Code Online (Sandbox Code Playgroud)
任何帮助解决这个问题的人都表示赞赏.
编辑:在预感,我使用Python2.7而不是3.6运行我的Matlab模块,它似乎使用2.7而不是3.6
:~/MatlabWorkspace/rs_cuboid_measure_script_python_attempt2/for_testing$ python2.7
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import rs_cuboid_measure_script_python
>>> rs = rs_cuboid_measure_script_python.initialize()
>>> rs.rs_cuboid_measure_script_python()
Not enough input arguments. *this is OK this means my function is getting called*
Run Code Online (Sandbox Code Playgroud)
小智 8
我有同样的问题.解决了:
cd /full_path_to_matlab_mcrroot/v94/bin/glnxa64
mv libexpat.so.1 libexpat.so.1.NOFIND
Run Code Online (Sandbox Code Playgroud)
感谢https://bbs.archlinux.org/viewtopic.php?pid=1112017#p1112017
/full_path_to_matlab_mcrroot/v94/bin/glnxa64/libexpat.so.1 指着 libexpat.so.1.5.0
但
/lib/x86_64-linux-gnu/libexpat.so.1 指着 libexpat.so.1.6.0
| 归档时间: |
|
| 查看次数: |
1816 次 |
| 最近记录: |