0

我正在编写一个将在 Fusion 360 中运行的程序。Fusion 360 使用 Python 作为其脚本语言,并提供了自己的 Python。当我的程序被执行时,Fusion 360 在它的 Python 中加载它并运行它。因此,我无法控制 Python 环境。可以使用其他包,只要它们是我的程序的本地包并使用相对路径导入,但我更喜欢使用 Python 标准库来避免重新交付更多组件及其依赖项的额外问题。

Fusion 360 正在使用 Python 3.5.3,我正在尝试进行一些 RESTFUL API 调用。在 Windows 上,一切都按预期工作,但在 Mac 上却失败了。我最初试图使用 requests 并假设失败是由于 requests 包,但有人建议使用 urllib 而不是坚持使用标准库,并且由于同样的原因它也失败了。

该代码适用于大多数标准网站(以下示例中的 google),但不适用于其他网站。在我的测试中,当端点是 REST API 时它总是失败,但对于 github.com 也失败,所以这可能是一个红鲱鱼。这是一个我很少有经验的领域,可以就如何调试和解决问题提出一些建议。

import traceback
import urllib.request

def run(context):
    try:
#        url = 'https://github.com'
#        url = 'https://google.com'
        url = 'https://api.github.com'

        req = urllib.request.urlopen(url)
        print(req.read())
        req.close()    
    except:
        print(traceback.format_exc())

正如我之前所说,这适用于 Windows,但在 Mac 上失败。这是失败的跟踪结果。

Traceback(最近一次通话最后):文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3. 5/urllib/request.py”,第 1254 行,在 do_open h.request(req.get_method(), req.selector, req.data, headers) 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/ production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py”,第 1107 行,在请求中 self._send_request(方法,网址,正文,头文件)文件“/用户/管理员/库/应用程序支持/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360。app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py”,第 1152 行,在 _send_request self.endheaders(body) 文件“/Users/admin/Library/Application Support/ Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py”,第 1103 行,在 endheaders self._send_output(message_body)文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py” ,第 934 行,在 _send_output self.send(msg) 文件中“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py”,行877,在发送 self.connect() 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3 .5/http/client.py”,第 1261 行,在连接 server_hostname=server_hostname) 文件中“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python .framework/Versions/Current/lib/python3.5/ssl.py”,第 385 行,在 wrap_socket _context=self) 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ ssl.py”,第 760 行,在初始化 self.do_handshake() 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ ssl.py”,第 996 行,在 do_handshake self._sslobj.do_handshake() 文件中“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework /Versions/Current/lib/python3.5/ssl.py",第 641 行,在 do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 警报协议版本 (_ssl.c:720)

在处理上述异常的过程中,又出现了一个异常:

回溯(最近一次通话最后):文件“/Users/admin/Dropbox/Scripts/RestfulTest/RestfulTest.py”,第 23 行,运行中 req = urllib.request.urlopen(url) 文件“/Users/admin/Library/应用程序支持/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,第 163 行,在 urlopen 返回开启器中。打开(网址,数据,超时)文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3. 5/urllib/request.py",第 466 行,打开响应 = self._open(req, data) 文件"/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,行484,在_open'_open',req)文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/ python3.5/urllib/request.py”,第 444 行,在 _call_chain 结果 = func(*args) 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents /Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,第 1297 行,在 https_open context=self._context, check_hostname=self._check_hostname) 文件“/Users/admin/Library/Application Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/ Current/lib/python3.5/urllib/request.py",第 1256 行,在 do_open 中引发 URLError(err) urllib.error.URLError:

4

0 回答 0