网易我的世界论坛
标题:
python脚本无法导入typing
[打印本页]
作者:
Ljzd_PRO
时间:
2023-8-15 00:56
标题:
python脚本无法导入typing
modMain.py
# -*- coding: utf-8 -*-
from common.mod import Mod
import mod.client.extraClientApi as clientApi
import mod.server.extraServerApi as serverApi
from modCommon import modConfig
from typing import Any, Dict, List, Optional, Tuple, Union
@Mod.Binding(name="ActorBlockGeometryMod", version="0.0.1")
class NeteaseModVf4JPaVx(object):
def __init__(self):
pass
@Mod.InitServer()
def ActorBlockGeometryModServerInit(self):
serverApi.RegisterSystem(modConfig.modName, modConfig.modServerSystem, modConfig.modServerSystemCls)
@Mod.DestroyServer()
def ActorBlockGeometryModServerDestroy(self):
pass
@Mod.InitClient()
def ActorBlockGeometryModClientInit(self):
clientApi.RegisterSystem(modConfig.modName, modConfig.modClientSystem, modConfig.modClientSystemCls)
@Mod.DestroyClient()
def ActorBlockGeometryModClientDestroy(self):
pass
复制代码
报错如下:
[2023-08-15 00:51:11,079] [INFO][Developer] start readStudio
LoadWindowsAddonPy: ActorBlockGeometryFFFDDScripts.modMain
Traceback (most recent call last):
File "mod/common/minecraftMod.py", line 802, in ImportModMain
File "redirect.py", line 104, in load_module
File "ActorBlockGeometryFFFDDScripts.modMain", line 7, in <module>
ImportError: No module named typing
复制代码
另外,有注意到ModAPI的Python代码中也有导入typing,但不会出现问题,例如:
system.serverSystem.py
# -*- coding: utf-8 -*-
from typing import Union
from typing import List
from mod.common.system.baseSystem import BaseSystem
from typing import Tuple
class ServerSystem(BaseSystem):
def BroadcastToAllClient(self, eventName, eventData):
# type: (str, dict) -> None
"""
服务器广播事件到所有客户端
"""
pass
def NotifyToMultiClients(self, targetIdList, eventName, eventData):
# type: (List[str], str, dict) -> None
"""
服务器发送事件到指定一批客户端,相比于在for循环内使用NotifyToClient性能更好
"""
pass
def NotifyToClient(self, targetId, eventName, eventData):
# type: (str, str, dict) -> None
"""
服务器发送事件到指定客户端
"""
pass
def CreateEngineEntityByTypeStr(self, engineTypeStr, pos, rot, dimensionId=0, isNpc=False):
# type: (str, Tuple[float,float,float], Tuple[float,float], int, bool) -> Union[str,None]
"""
创建指定identifier的实体
"""
pass
def CreateEngineItemEntity(self, itemDict, dimensionId=0, pos=(0, 0, 0)):
# type: (dict, int, Tuple[float,float,float]) -> Union[str,None]
"""
用于创建物品实体(即掉落物),返回物品实体的entityId
"""
pass
def DestroyEntity(self, entityId):
# type: (str) -> bool
"""
销毁实体
"""
pass
复制代码
作者:
不舒服斯基
时间:
2023-8-15 10:59
本帖最后由 不舒服斯基 于 2023-8-15 11:03 编辑
Python2 的 typing 模块在 pip 版本 21 中已经不支持了,检查下本地的 pip 版本吧,降级到版本 20 后再重新安装 typing 模块。
作者:
Ljzd_PRO
时间:
2023-8-15 15:58
不舒服斯基 发表于 2023-8-15 10:59 广东
Python2 的 typing 模块在 pip 版本 21 中已经不支持了,检查下本地的 pip 版本吧,降级到版本 20 后再重新 ...
是要手动把typing模块放到自己的代码目录吗?我是游戏运行的时候调试工具报错,本地编辑器是没有提示有问题
作者:
Ljzd_PRO
时间:
2023-8-15 16:17
我稍微改了一下
try:
from typing import Union, List, Tuple, Optional, Dict, Any
except ImportError:
pass
复制代码
一般情况下typing在实际运行的时候没什么实际作用,python2应该更是,这样写在编辑器里就可以用泛型做类型注解了
作者:
B站1574
时间:
2024-5-18 21:47
网易的ModAPI是伪代码,实际上没有typing
注解的话可以考虑用小写,例如List就是list
欢迎光临 网易我的世界论坛 (http://mc.netease.com/)
Powered by Discuz! X3.3