微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安装Mypy会导致“阴影库模块”-错误

如何解决安装Mypy会导致“阴影库模块”-错误

我将mypy及其依赖项下载并安装到名为lib的文件夹中(与mypy分开,其他库也位于其中):

pip install --upgrade --target=. mypy
Collecting mypy
  Using cached mypy-0.790-cp37-cp37m-win_amd64.whl (8.5 MB)
Collecting mypy-extensions<0.5.0,>=0.4.3
  Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB)
Collecting typed-ast<1.5.0,>=1.4.0
  Using cached typed_ast-1.4.1-cp37-cp37m-win_amd64.whl (155 kB)
Collecting typing-extensions>=3.7.4
  Using cached typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Installing collected packages: mypy-extensions,typed-ast,typing-extensions,mypy
Successfully installed mypy-0.790 mypy-extensions-0.4.3 typed-ast-1.4.1 typing-extensions-3.7.4.3

我想用mypy分析一个文件,该文件从另一个目录(即我安装mypy的lib模块)中导入模块。因此,为了遵循导入,我设置了MYPYPATH变量以保存lib目录的路径:

set MYPYPATH=path_to_lib

现在,如果执行mypy,我将收到一个错误提示““ typing_extensions.py”遮蔽库模块“ typing_extensions”“:

mypy --namespace-packages script_to_check.py
mypy: "path_to_lib\typing_extensions.py" shadows library module "typing_extensions"
note: A user-defined top-level module with name "typing_extensions" is not supported

typing_extensions实际上是由mypy安装的,现在它告诉我它不能使用该软件包!?

如果我将pyth_to_lib中的typing_extensions.py重命名为_typing_extensions.py,则会收到错误消息,提示mypy无法导入type_extensions:

mypy --namespace-packages ng_gen_igxl_tp.py
Traceback (most recent call last):
  File "c:\software\anaconda3\lib\runpy.py",line 193,in _run_module_as_main
    "__main__",mod_spec)
  File "c:\software\anaconda3\lib\runpy.py",line 85,in _run_code
    exec(code,run_globals)
  File "path_to_lib\bin\mypy.exe\__main__.py",line 4,in <module>
  File "path_to_lib\mypy\__main__.py",in <module>
    from mypy.main import main
  File "mypy\main.py",line 11,in <module>
ModuleNotFoundError: No module named 'typing_extensions'

如何让mypy运行?

解决方法

经过进一步调查,我在评论中已经提到的事实是正确的:It is not possible to include the directory where mypy is installed in MYPYPATH
我最终创建了一个虚拟环境并在其中安装了mypy-首先我们应该这样做-现在一切都按预期运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。