python - Python 模块混淆
问题描述
当我开始查看 PyMySQL 存储库时,我对 python 模块的工作方式感到有些困惑,请参见此处:https ://github.com/PyMySQL/PyMySQL?files=1
1)为什么没有pymysql.py文件,因为它是这样导入的:import pymysql?不需要这样的文件吗?
2)我在任何地方都找不到方法连接,如:pymysql.connect(...)。是否可以以某种方式重命名导出的方法?
解决方案
那里有一个目录pymysql
。目录也可以作为模块* 导入,其优点是它可以包含子模块。传统上,__init__.py
目录中有一个文件控制顶级pymysql.*
命名空间中的内容。
因此,connect
您缺少的方法将直接在 中定义pymysql/__init__.py
,或者在该目录中的同级之一中定义,然后通过pymysql/__init__.py
.
*严格来说,你import
喜欢一个模块的目录真的叫做“包”。我喜欢避免使用这个术语——它可能会让人感到困惑,因为这个术语被重载了:你安装的东西pip
在意义 2 中也被称为“包”,而它实际上可能包含在意义 1 中的多个“包”。
推荐阅读
- node.js - 如何获取 Loopback 3 条件“数据源”和“模型配置”:按照说明操作但不起作用
- assembly - 反转字符串并以汇编 MIPS 语言打印
- hyperledger-fabric - 将组织添加到现有网络失败,频道 ID 不匹配 $CHANNEL_NAME != mychannel
- batch-file - 非英文键盘的发送键故障
- javascript - Laravel 和 Vue:在使用渲染任何组件之前从 Store 初始化身份验证
- java - javax.servlet.http.HttpServletRequest 中的 HttpSession 是如何工作的
- android - 如果模块大小小于 10MB,则会显示动态交付用户确认对话框
- azure-service-fabric - 在 Service Fabric 中查询可靠集合(IReliableDictionary)的方法是什么?
- javascript - Chart.js 仅在悬停时显示字体更改
- ios - 如何比较设置
和 iOS Swift 中的字符串?