VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 3
声望: 0

C:\veighna_studio\venv\Scripts\python.exe C:/veighna_studio/Lib/site-packages/vnpy_ctastrategy/strategies/run.py
Traceback (most recent call last):
File "C:\veighna_studio\Lib\site-packages\vnpy_ctastrategy\strategies\run.py", line 7, in <module>
from vnpy.event import EventEngine
File "C:\veighna_studio\Lib\site-packages\vnpy\event__init.py", line 1, in <module>
from .engine import Event, EventEngine, EVENT_TIMER
File "C:\veighna_studio\Lib\site-packages\vnpy\event\engine.py", line 9, in <module>
from typing import Any, Callable, List
File "C:\veighna_studio\Lib\site-packages\typing.py", line 1359, in <module>
class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
File "C:\veighna_studio\Lib\site-packages\typing.py", line 1007, in
new__
self._abc_registry = extra._abc_registry
AttributeError: type object 'Callable' has no attribute '_abc_registry'

如何解决?

Member
avatar
加入于:
帖子: 1493
声望: 106

你这里typing库似乎被破坏了,卸载了Studio重装下最新版吧

Member
avatar
加入于:
帖子: 125
声望: 4

试试pip uninstall typing把typing库卸掉,再重新安装

Member
avatar
加入于:
帖子: 3
声望: 0

我是用pycharm来运行的。我以C:\veighna_studio文件夹和C:\veighna_studio\Lib\site-packages文件夹分别建立项目做实验,python解释器都选择C:\veighna_studio\python.exe。
在以C:\veighna_studio建立的项目中运行run.py会出现上述错误。而在以C:\veighna_studio\Lib\site-packages建立的项目中运行run.py则正常。不知是什么原因。

Member
avatar
加入于:
帖子: 1493
声望: 106

智者 wrote:

我是用pycharm来运行的。我以C:\veighna_studio文件夹和C:\veighna_studio\Lib\site-packages文件夹分别建立项目做实验,python解释器都选择C:\veighna_studio\python.exe。
在以C:\veighna_studio建立的项目中运行run.py会出现上述错误。而在以C:\veighna_studio\Lib\site-packages建立的项目中运行run.py则正常。不知是什么原因。

这个是典型的环境变量污染问题了,新手不推荐用PyCharm

Member
avatar
加入于:
帖子: 3
声望: 0

感谢七月雪和MTF的回答。

之前做的实验,后来却无法再现之前的结果。可能是实验条件记录有误。

不过现在基本搞清了问题发生的原因。结论是:在C:\veighna_studio\Lib和C:\veighna_studio\Lib\site-packages文件夹下各有一个typing.py文件,后者的文件版本较新,不同的项目因模块搜索顺序不同而调用了不同的版本的typing.py文件,调用新版的typing.py文件,会出现上述AttributeError错误。

修改C:\veighna_studio\Lib\site-packages\vnpy\event\engine.py文件,在开头加入
“import sys
print(sys.path)”,然后运行进行测试。

在PyCharm中单独打开C:\veighna_studio项目,模块搜索顺序(sys.path)会变化,根文件夹C:\veighna_studio会提前,文件夹C:\veighna_studio\Lib\site-packages排在C:\veighna_studio\Lib之后,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib下的typing.py文件(文件版本较旧),不会出错。

在PyCharm中单独打开C:\veighna_studio\Lib\site-packages项目,模块搜索顺序(sys.path)会变化,根文件夹C:\veighna_studio\Lib\site-packages会提前,排在C:\veighna_studio\Lib之前,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib\site-packages下的typing.py文件(文件版本较新),会出错。

在PyCharm中打开C:\veighna_studio项目后,再打开C:\veighna_studio\Lib\site-packages项目,打开方式有三种。不选择在新窗口中打开项目、替换现有窗口的项目,而选择以附加到已经打开的项目的形式打开,同样也会影响模块搜索顺序(sys.path),文件夹C:\veighna_studio\Lib\site-packages会提前,排在C:\veighna_studio\Lib之前,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib\site-packages下的typing.py文件(文件版本较新),会出错。点击进入File | Settings | 项目: veighna_studio | 项目依赖项,调整设置,在 “项目”窗格选中veighna_studio项目,在“取决于这些项目”窗格,取消选中所需项目site-packages名称左侧的复选框,问题得以解决。

Member
avatar
加入于:
帖子: 2
声望: 0

感谢大佬,遇到了同样问题。原来是typing版本不兼容同时两个同样的库发生冲突,卸载外面site-packages的typing.py,然后安装旧版本解决问题👌🏻

智者 wrote:

感谢七月雪和MTF的回答。

之前做的实验,后来却无法再现之前的结果。可能是实验条件记录有误。

不过现在基本搞清了问题发生的原因。结论是:在C:\veighna_studio\Lib和C:\veighna_studio\Lib\site-packages文件夹下各有一个typing.py文件,后者的文件版本较新,不同的项目因模块搜索顺序不同而调用了不同的版本的typing.py文件,调用新版的typing.py文件,会出现上述AttributeError错误。

修改C:\veighna_studio\Lib\site-packages\vnpy\event\engine.py文件,在开头加入
“import sys
print(sys.path)”,然后运行进行测试。

在PyCharm中单独打开C:\veighna_studio项目,模块搜索顺序(sys.path)会变化,根文件夹C:\veighna_studio会提前,文件夹C:\veighna_studio\Lib\site-packages排在C:\veighna_studio\Lib之后,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib下的typing.py文件(文件版本较旧),不会出错。

在PyCharm中单独打开C:\veighna_studio\Lib\site-packages项目,模块搜索顺序(sys.path)会变化,根文件夹C:\veighna_studio\Lib\site-packages会提前,排在C:\veighna_studio\Lib之前,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib\site-packages下的typing.py文件(文件版本较新),会出错。

在PyCharm中打开C:\veighna_studio项目后,再打开C:\veighna_studio\Lib\site-packages项目,打开方式有三种。不选择在新窗口中打开项目、替换现有窗口的项目,而选择以附加到已经打开的项目的形式打开,同样也会影响模块搜索顺序(sys.path),文件夹C:\veighna_studio\Lib\site-packages会提前,排在C:\veighna_studio\Lib之前,运行run.py,调用typing模块会优先调用C:\veighna_studio\Lib\site-packages下的typing.py文件(文件版本较新),会出错。点击进入File | Settings | 项目: veighna_studio | 项目依赖项,调整设置,在 “项目”窗格选中veighna_studio项目,在“取决于这些项目”窗格,取消选中所需项目site-packages名称左侧的复选框,问题得以解决。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】