Python包中如何导出驼峰命名类,实现无需前缀直接调用?
问题1:实现直接调用
TestClass()的方法 你当前报错的原因是导入的testclass是独立模块文件,TestClass属于该模块的内部成员,没有被直接导入到当前代码的命名空间中,有两种常用解决方案:
- 方案1:修改导入语句,直接从模块中导入目标类
将测试代码的导入逻辑改为:
即可直接调用类完成实例化。from mypackage.testclass import TestClass a = TestClass() - 方案2:通过包的
__init__.py暴露内部成员(更符合通用包的开发规范)
在你的mypackage根目录下新建__init__.py文件,写入内容:
后续用户使用包时,直接执行下面的语句就可以调用类:from .testclass import TestClassfrom mypackage import TestClass a = TestClass()
问题2:dist-info目录的来源与生成方式
*.dist-info是Python包的标准元数据目录,符合PEP 427规范,存储了包的名称、版本号、依赖列表、许可证、作者信息、安装文件清单、入口点等所有元数据。你看到的标准库、第三方包调用时不需要加文件名前缀,本质是这些包的开发者在包的__init__.py中提前暴露了需要对外提供的类、函数等成员,和dist-info目录没有直接关联。- dist-info目录不需要手动编写,你执行
python -m build命令构建包时,构建工具会自动从你的setup.py/setup.cfg/pyproject.toml配置文件中读取所有元信息,自动生成对应的dist-info目录,pip安装包时会自动将该目录放置到site-packages路径下。
内容的提问来源于stack exchange,提问作者reza
相关产品推荐
相关产品推荐

