Python Pip打包后类成员类型提示在PyCharm无法正常推断如何解决?
解决方案
按照以下步骤调整配置后即可让PyCharm正常识别类型:
1. 修正setup.py的包名配置错误
你当前setup.py中packages=['ab']的配置和实际使用的包名ab_package不匹配,会导致PyCharm索引包路径时出现异常,修改为如下配置即可:
from setuptools import setup, find_packages setup( name='ab_package', version='0.0.1', description='My AB package', url='https://github.com/somewhere', author='Me', author_email='me@somedomain.com', license='Private', packages=find_packages(), # 自动扫描所有包,不需要手动指定名称 install_requires=['numpy>=1.19.5', 'pandas>=1.3.3', 'pylint==2.11.1', 'pyparsing~=2.4.7', 'requests~=2.26.0', 'wget~=3.2', ], classifiers=[ ], )
如果不想用find_packages,也可以直接把packages的值改为['ab_package'],和实际包名保持一致即可。
2. 新增PEP 561类型标记文件
在你的ab_package根目录(和__init__.py同目录)下新建一个空文件,命名为py.typed。这个文件是Python官方规定的类型支持标记,会告诉PyCharm等类型检查工具,当前包自带完整类型注解,需要读取包内的类型信息做推断。
3. 修正模块内的导入路径
模块内的导入在包作为第三方库被引用时,需要改为相对导入避免路径解析错误:
a.py修改为:
from .b import B class A: def __init__(self): self.member: B = B()
__init__.py也同步修改为相对导入,后续修改包名不需要同步调整:
from .a import A from .b import B
4. 刷新PyCharm索引
修改完成后先卸载旧版本的ab_package,重新打包安装新版本,然后在PyCharm中点击File -> Invalidate Caches...,选择清除并重启IDE,等待索引重建完成后就能看到myvar被正确推断为B类型。
内容的提问来源于stack exchange,提问作者Pierre Mardon
相关产品推荐
相关产品推荐

