python3环境配置tap模块问题及解决方案

conda环境是python=3.8,代码中使用了tap模块

from tap import Tap

问题1

python2和python3语法冲突

 File "/home/cedric/anaconda3/envs/decision_diffuser_env/lib/python3.8/site-packages/tap.py", line 6, in <module>
    from mc_bin_client import mc_bin_client, memcacheConstants as Constants
  File "/home/cedric/anaconda3/envs/decision_diffuser_env/lib/python3.8/site-packages/mc_bin_client/mc_bin_client.py", line 278
    except MemcachedError, e:
                         ^
SyntaxError: invalid syntax

解决方案

修改mc_bin_client.py文件,第278,369,396行

改为:

except MemcachedError as e:

问题2

python2中的exceptions模块在python3中不再支持

  File "/home/cedric/anaconda3/envs/decision_diffuser_env/lib/python3.8/site-packages/tap.py", line 6, in <module>
    from mc_bin_client import mc_bin_client, memcacheConstants as Constants
  File "/home/cedric/anaconda3/envs/decision_diffuser_env/lib/python3.8/site-packages/mc_bin_client/mc_bin_client.py", line 11, in <module>
    import exceptions
ModuleNotFoundError: No module named 'exceptions'

解决方案

  1. 把 import exception注掉,python3不用导入,直接继承Exception
  2. 第24行,改为
class MemcachedError(Exception):

问题3

memcacheConstants 的导入方式

from memcacheConstants import REQ_MAGIC_BYTE, RES_MAGIC_BYTE
from memcacheConstants import REQ_PKT_FMT, RES_PKT_FMT, MIN_RECV_PACKET
from memcacheConstants import SET_PKT_FMT, INCRDECR_RES_FMT
import memcacheConstants

解决方案

改为

from .memcacheConstants import REQ_MAGIC_BYTE, RES_MAGIC_BYTE
from .memcacheConstants import REQ_PKT_FMT, RES_PKT_FMT, MIN_RECV_PACKET
from .memcacheConstants import SET_PKT_FMT, INCRDECR_RES_FMT
from . import memcacheConstants

猜你喜欢

转载自blog.csdn.net/CCCDeric/article/details/129292190