首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyZ3950 - EncodingError:移植到Python3后bytes_write的类型不正确

PyZ3950 - EncodingError:移植到Python3后bytes_write的类型不正确
EN

Stack Overflow用户
提问于 2020-03-01 15:48:02
回答 1查看 117关注 0票数 2

我正在尝试使用django应用程序中的PyZ3950连接到数据库以检索数据。这个模块很旧了,它已经在Python2上工作了,但是我找不到Python3的工作版本。

github上的https://github.com/danizen/PyZ3950 repo设法使用2to3.py和一些手动更改移植了应用程序,但是尽管这个库安装得很好,但当我尝试zoom中的Connection方法时,它抛出了错误PyZ3950.asn1.EncodingError: Bad type to bytes_write

下面是完整的回溯:

代码语言:javascript
复制
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:21:23) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.        
>>> from PyZ3950 import zoom
>>> conn = zoom.Connection ('z3950.loc.gov', 7090)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\zoom.py", line 276, in __init__
    self.connect()
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\zoom.py", line 301, in connect
    self._cli = z3950.Client (self.host, self.port,
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\z3950.py", line 510, in __init__
    self.initresp = self.transact (
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\z3950.py", line 529, in transact
    b = self.encode_ctx.encode (APDU, to_send)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 622, in encode
    spec.encode (self, data)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 1192, in encode
    ctyp.encode (ctx, val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 858, in encode
    self.typ.encode (ctx, val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 796, in encode
    self.encode_val (ctx, val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 1504, in encode_val
    typ.encode (ctx, v)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 858, in encode
    self.typ.encode (ctx, val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 796, in encode
    self.encode_val (ctx, val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 1089, in encode_val
    ctx.bytes_write (val)
  File "D:\Downloads\Applications\PyZ3950-danizen\PyZ3950-master\PyZ3950\asn1.py", line 633, in bytes_write
    raise EncodingError("Bad type to bytes_write")
PyZ3950.asn1.EncodingError: Bad type to bytes_write
EN

回答 1

Stack Overflow用户

发布于 2021-09-20 04:30:03

虽然我不能具体回答您的问题,但我已经尝试从Dan Davis:https://github.com/danizen/PyZ3950的工作开始更新PyZ3959代码。

我并没有试图让代码与Python2和Python3兼容,而是专注于让它与Python3.7兼容。代码可以在这里找到:https://github.com/heaphey/PyZ3950

我没有以系统的方式测试它(我相信Dan正在做的),但已经让它工作得足够好,可以从OCLC获取MARC记录,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60473040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档