一、模块、包

1、模块

模块实质上就是一个python文件。它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称

2、包

包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件。包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果想到如其他目录下的模块,那么这个目录必须是一个包才可以导入。

二、模块分类

1、标准模块、标准包

  python自带的这些模块,直接import就能用的

  import string,random,datetime,os,sys,json,hashlib

2、第三方模块

  别人写好的一些模块,你要安装之后才可以用

  想实现某个功能,可以先去百度搜一下有没有第三方模块

3、自己写的python文件

三、安装第三方模块

1、傻瓜式的

pip install pymysql

    pip在python3.4以上的版本是自带的。但这种方式需要保证pycharm中的Project Interpreter路径是Python安装路径,否则即使窗口显示下载安装成功,依然不能成功import

    因为命令行下载下来的第三方安装包存储在Python安装路径\python3\Lib\site-packages

    而pycharm import时,是从pycharm->File->Settings->Project Interpreter->设置的路径下\python\venv\Lib\site-packages去取第三方安装包

  (2) 也可以直接在pycharm中安装第三方模块,这样安装的模块会放在Project Interpreter->设置的路径下\python\venv\Lib\site-packages下,就可以直接使用。

python 第三方模块导入 python如何导入第三方模块_python 第三方模块导入

  (3) 若提示pip命令不存在

    输入 where pip

    若提示pip不是内部命令

   pycharm External Libraries

   备注:python 3.5以后 scripts自动加入到计算机环境变量   

没有pip命令的怎么搞  

   a、pycharm里面点python console
   b、找到python安装目录
   c、然后把安装目录下的scripts目录,加入到环境变量里面即可
      ps:环境变量在PATH里面加
  (4) Unknown or unsupported command 'install' 出来这个问提怎么解决
    a、打开 C:\strawberry\perl\bin\
    b、把这个目录下的pip 都改成其他的名字,这个对其他的没有影响

2、手动安装

限制外网无法直接下载时,可以找别人下载好包然后手动安装

  (1) 百度搜索:python redis

  (2) 找到网址:https://pypi.python.org/pypi/redis#downloads,下载安装包

  (3) 安装whl结尾的安装包

   shift+右键,在此处打开命令行窗口(或者在地址栏中直接输入cmd)

pip install redis-2.10.6-py2.py3-none-any.whl

  (4) 安装tar.gz结尾的安装包

    a、解压这个压缩包

    b、进入到这个解压之后的文件夹里面(shift+右键,在此处打开命令行窗口(或者在地址栏中直接输入cmd))

python setup.py install

3、卸载模块

pip uninstall xxx #卸载

四、导入模块的顺序、实质

1、python导入模块时候的顺序:

  (1) 从当前目录下找需要导入的python文件

  (2) 从python的环境变量中找 sys.path 

2、导入模块的实质:

   就是把python文件从头到尾执行一次

举个例子:

  (1) 自定义一个python模块 dr.py,放在当前目录下

name = 'hello'
def my():
    print('python')
my()

  (2) 新建一个tmp.py

import dr #导入文件的时候已经把python文件执行了一次,打印出python
print(dr.name) #打印出hello
dr.my() #打印出python

上面的代码还可以用下面这种方式写

from dr import name,my #这种调用自定义函数时不用再写“文件名.函数”,直接写函数或者变量名
print(name)
my()
from dr import * #导入所有的
#from aa import *
my()
#尽量不要用,因为看源码的时候会很难看出来函数属于哪个文件

  (3) 当把dr.py放在sys.path其中一个环境变量下后,dr.就可以点出函数了 

    (4) 当前目录和path环境变量下都有dr.py,会优先选择当前目录下的dr.py