Python基础-模块和包:
一、为什么需要模块和包:
随着项目越来越大,所有代码都放在一个文件中,已经不能满足我们的需求了。这时候就要将代码进行整理了,模块和包的出现就是为了解决这个问题的。模块可以将一些相关联的代码组合在一个py
文件中,包可以将一些相关联的模块组合在一个文件夹中。
二、将一个模块导入到当前文件中的几种方式:
import
:导入某个模块。以后要使用模块中的函数或者方法或者变量,则需要使用模块名.xxx
的形式调用。from xxx import xxx
:从某个模块中导入某个对象或者方法等。也可以一次性的从模块中导入所有的对象。使用from xxx import *
。from a import b as c
:从a
中导入b
并命名为c
。以后在代码中引用b
,通过c
来引用。
三、包:
包其实本质上就是一个文件夹,将一些相关联的模块组合在一起。但是如果一个文件夹要让Python
识别为一个包,则必须在这个文件夹中创建一个叫做__init__.py
的文件。一个文件夹中只有拥有了__init__.py
这个文件,才能被视为一个包。
在同一个包中的模块如果要互相导入,则只能通过相对的方式进行导入,即:from . import xxx
。
四、__all__
:
- 如果是在模块中写了这个变量,将控制
from 模块名字 import *
的行为。 - 如果在
__init__.py
文件中有这个变量,那么它将控制着from 包 import *
的行为。
五、模块的搜索路径:
- 在当前目录下搜索模块。
- 在环境变量
PYTHONPATH
中搜索模块。 - 在
Python
安装路径下的Lib
目录下查找。 - 使用
os.path
可以看到所有的查找路径。
六、模块的循环导入:
比如有现在目录中有两个模块,一个a.py
,一个b.py
。在a.py
中引用了b
。而在b.py
中又引用了a
,那么这时候就产生了循环导入,让两个导入都不能完成。
七、__name__
如果是作为主程序来运行,那么等于__main__
,如果是作为被导入的方式运行,那么是这个文件的名称。
八、安装包或者模块:
可以通过pip
或者easy_install
安装。pip
是现代化的一种安装包的方式,以下讲解pip
的常用命令:
-
安装包:
pip install requests
-
安装指定版本的包:
pip install django == 1.10.6
-
卸载包:
pip uninstall django
-
升级包:
pip install -U requests
-
升级
pip
:pip install -U pip
-
查看当前
pip
是哪个版本:pip --version
-
显示某个已安装的包的信息:
pip show -f <包名>
-
列出当前环境下安装了哪些包:
pip list
-
将当前环境安装的包全部列出来放在文件中:
pip freeze > requirements.txt
-
从某个文件中安装包:
pip install -r requirements.txt
-
临时更改安装源,以豆瓣源为例:
pip install <包名> -i https://pypi.douban.com/simple
-
永久更改安装源:
-
windows操作系统:在当前用户目录下新建
pip/pip.ini
,然后在文件中添加以下代码:[global] index-url = https://pypi.douban.com/simple
-
Linux/Mac:在用户目录下新建
.pip/pip.conf
,然后在文件中添加以下代码:[global] index-url = https://pypi.douban.com/simple
-