首页 > 解决方案 > Python 模块混淆

问题描述

当我开始查看 PyMySQL 存储库时,我对 python 模块的工作方式感到有些困惑,请参见此处:https ://github.com/PyMySQL/PyMySQL?files=1

1)为什么没有pymysql.py文件,因为它是这样导入的:import pymysql?不需要这样的文件吗?

2)我在任何地方都找不到方法连接,如:pymysql.connect(...)。是否可以以某种方式重命名导出的方法?

标签: pythonpython-3.x

解决方案


那里有一个目录pymysql。目录也可以作为模块* 导入,其优点是它可以包含子模块。传统上,__init__.py目录中有一个文件控制顶级pymysql.*命名空间中的内容。

因此,connect您缺少的方法将直接在 中定义pymysql/__init__.py,或者在该目录中的同级之一中定义,然后通过pymysql/__init__.py.

*严格来说,你import喜欢一个模块的目录真的叫做“包”。我喜欢避免使用这个术语——它可能会让人感到困惑,因为这个术语被重载了:你安装的东西pip在意义 2 中也被称为“包”,而它实际上可能包含在意义 1 中的多个“包”。

请参阅__init__.py 的用途是什么?官方文档


推荐阅读