从matlab调用python - 在Ubuntu 16.04上没有SSL模块

时间:2016-09-08 18:30:36

标签: python bash matlab ubuntu ssl

我使用系统调用从Matlab调用python脚本。 该脚本正在对https网址发布请求。 这曾经在Ubuntu 14.04中工作,但在16.04停止工作

你可以这样测试:

先决条件:matlab,python,python-requests

从bash命令行:

$ python -c "import requests; a = requests.get( 'https://github.com');print len(a.text);"
  • 输出:

    25696
    

来自matlab:

>> system('python -c "import requests; a = requests.get( ''https://github.com'');print len(a.text);"')
  • ubuntu 14.04上的输出:

    25706
    
    ans =
    
      0
    
  • ubuntu 16.04上的输出:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/lib/python2.7/dist-packages/requests/api.py", line 67, in get
        return request('get', url, params=params, **kwargs)
      File "/usr/lib/python2.7/dist-packages/requests/api.py", line 53, in request
        return session.request(method=method, url=url, **kwargs)
      File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 468, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/lib/python2.7/dist-packages/requests/sessions.py", line 576, in send
        r = adapter.send(request, **kwargs)
      File "/usr/lib/python2.7/dist-packages/requests/adapters.py", line 447, in send
        raise SSLError(e, request=request)
    requests.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
    
    ans =
    
         1
    

两种情况下,Matlab版本均为R2014a。 Python版本2

我试图安装不同的软件包版本而没有运气。我不知道应该寻找什么,因为问题似乎是检测到在一个系统中工作的共享库(libssl 1.0.0)并且失败在另一个。我该怎么调试呢?

任何提示都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

看起来有一个从Matlab运行python的方法来强制python加载适当版本的libssl.o:

RTLD_NOW = 2;
RTLD_DEEPBIND = 8;
flag = bitor(RTLD_NOW, RTLD_DEEPBIND); % RTLD_NOW | RTLD_DEEPBIND
py.sys.setdlopenflags(int32(flag));
py.importlib.import_module('_ssl');

https://www.mathworks.com/matlabcentral/answers/297090-when-i-run-a-python-module-which-imports-ssl-py-error-occurs-but-it-s-ok-to-run-the-straight-pyt?requestedDomain=www.mathworks.com