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'
解决方案
- 把 import exception注掉,python3不用导入,直接继承Exception
- 第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