查看: 256|回复: 3
打印 上一主题 下一主题

[反馈] python脚本无法导入typing

[复制链接]

2

主题

2

回帖

4

积分

Lv.1 新手木匠

UID
9336825
小麦
1
金锭
11
下界之星
0
跳转到指定楼层
楼主
发表于 2023-8-15 00:56:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 IP:福建
modMain.py
  1. # -*- coding: utf-8 -*-

  2. from common.mod import Mod
  3. import mod.client.extraClientApi as clientApi
  4. import mod.server.extraServerApi as serverApi
  5. from modCommon import modConfig
  6. from typing import Any, Dict, List, Optional, Tuple, Union

  7. @Mod.Binding(name="ActorBlockGeometryMod", version="0.0.1")
  8. class NeteaseModVf4JPaVx(object):

  9.     def __init__(self):
  10.         pass

  11.     @Mod.InitServer()
  12.     def ActorBlockGeometryModServerInit(self):
  13.         serverApi.RegisterSystem(modConfig.modName, modConfig.modServerSystem, modConfig.modServerSystemCls)

  14.     @Mod.DestroyServer()
  15.     def ActorBlockGeometryModServerDestroy(self):
  16.         pass

  17.     @Mod.InitClient()
  18.     def ActorBlockGeometryModClientInit(self):
  19.         clientApi.RegisterSystem(modConfig.modName, modConfig.modClientSystem, modConfig.modClientSystemCls)

  20.     @Mod.DestroyClient()
  21.     def ActorBlockGeometryModClientDestroy(self):
  22.         pass
复制代码

报错如下:
  1. [2023-08-15 00:51:11,079] [INFO][Developer] start readStudio
  2. LoadWindowsAddonPy: ActorBlockGeometryFFFDDScripts.modMain
  3. Traceback (most recent call last):
  4. File "mod/common/minecraftMod.py", line 802, in ImportModMain
  5. File "redirect.py", line 104, in load_module
  6. File "ActorBlockGeometryFFFDDScripts.modMain", line 7, in <module>
  7. ImportError: No module named typing
复制代码
另外,有注意到ModAPI的Python代码中也有导入typing,但不会出现问题,例如:
system.serverSystem.py
  1. # -*- coding: utf-8 -*-

  2. from typing import Union
  3. from typing import List
  4. from mod.common.system.baseSystem import BaseSystem
  5. from typing import Tuple

  6. class ServerSystem(BaseSystem):
  7.     def BroadcastToAllClient(self, eventName, eventData):
  8.         # type: (str, dict) -> None
  9.         """
  10.         服务器广播事件到所有客户端
  11.         """
  12.         pass

  13.     def NotifyToMultiClients(self, targetIdList, eventName, eventData):
  14.         # type: (List[str], str, dict) -> None
  15.         """
  16.         服务器发送事件到指定一批客户端,相比于在for循环内使用NotifyToClient性能更好
  17.         """
  18.         pass

  19.     def NotifyToClient(self, targetId, eventName, eventData):
  20.         # type: (str, str, dict) -> None
  21.         """
  22.         服务器发送事件到指定客户端
  23.         """
  24.         pass

  25.     def CreateEngineEntityByTypeStr(self, engineTypeStr, pos, rot, dimensionId=0, isNpc=False):
  26.         # type: (str, Tuple[float,float,float], Tuple[float,float], int, bool) -> Union[str,None]
  27.         """
  28.         创建指定identifier的实体
  29.         """
  30.         pass

  31.     def CreateEngineItemEntity(self, itemDict, dimensionId=0, pos=(0, 0, 0)):
  32.         # type: (dict, int, Tuple[float,float,float]) -> Union[str,None]
  33.         """
  34.         用于创建物品实体(即掉落物),返回物品实体的entityId
  35.         """
  36.         pass

  37.     def DestroyEntity(self, entityId):
  38.         # type: (str) -> bool
  39.         """
  40.         销毁实体
  41.         """
  42.         pass

复制代码



0

主题

448

回帖

124

积分

Lv.4 怪物猎人

UID
5221547
小麦
2
金锭
988
下界之星
0
沙发
发表于 2023-8-15 10:59:49 | 只看该作者 IP:广东
本帖最后由 不舒服斯基 于 2023-8-15 11:03 编辑

Python2 的 typing 模块在 pip 版本 21 中已经不支持了,检查下本地的 pip 版本吧,降级到版本 20 后再重新安装 typing 模块。

2

主题

2

回帖

4

积分

Lv.1 新手木匠

UID
9336825
小麦
1
金锭
11
下界之星
0
板凳
 楼主| 发表于 2023-8-15 15:58:52 | 只看该作者 IP:福建
不舒服斯基 发表于 2023-8-15 10:59 广东
Python2 的 typing 模块在 pip 版本 21 中已经不支持了,检查下本地的 pip 版本吧,降级到版本 20 后再重新 ...

是要手动把typing模块放到自己的代码目录吗?我是游戏运行的时候调试工具报错,本地编辑器是没有提示有问题

2

主题

2

回帖

4

积分

Lv.1 新手木匠

UID
9336825
小麦
1
金锭
11
下界之星
0
地板
 楼主| 发表于 2023-8-15 16:17:37 | 只看该作者 IP:福建
我稍微改了一下
  1. try:
  2.     from typing import Union, List, Tuple, Optional, Dict, Any
  3. except ImportError:
  4.     pass
复制代码

一般情况下typing在实际运行的时候没什么实际作用,python2应该更是,这样写在编辑器里就可以用泛型做类型注解了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部