模块:
1、内置标准模块(标准库)执行help('modules')查看所有python模块列表
2、第三方开源模块,可以通过pip install 模块名 在线安装
3、自定义模块
>>> import sys
>>> sys
<module 'sys' (built-in)> # 模块 内置
>>> help('modules')
Please wait a moment while I gather a list of all available modules...
CDROM aifc http setuptools
DLFCN antigravity idlelib shelve
IN argparse imaplib shlex
TYPES array imghdr shutil
__future__ ast imp signal
_ast asynchat importlib site
#前面带 _ 的不用理会、
模块的调用:
import module from module import XX # from os import rmdir 或者多个 from os import rmdir,rename from module.xx.xx import XX # from django.core.handlers import wsgi from module.xx.xx import XX as rename #者把复杂模块的名字起个别名 from django.core.handlers import wsgi as linyaohong 模块一但被调用,相当于执行另外一个py文件里的代码
模块的导入路径:导入顺序从左往右,依次导入,
>>> import sys
>>> sys.path #导入模块的路径
['', '/usr/local/python3/lib/python35.zip', '/usr/local/python3/lib/python3.5', '/usr/local/python3/lib/python3.5/plat-linux', '/usr/local/python3/lib/python3.5/lib-dynload', '/usr/local/python3/lib/python3.5/site-packages']
>>> sys.path.append('/tmp') #临时加入其它导入路径 了解即可
>>> sys.path
['', '/usr/local/python3/lib/python35.zip', '/usr/local/python3/lib/python3.5', '/usr/local/python3/lib/python3.5/plat-linux', '/usr/local/python3/lib/python3.5/lib-dynload', '/usr/local/python3/lib/python3.5/site-packages', '/tmp']
>>> del sys.path[-1] #删除 了解即可
>>> sys.path
['', '/usr/local/python3/lib/python35.zip', '/usr/local/python3/lib/python3.5', '/usr/local/python3/lib/python3.5/plat-linux', '/usr/local/python3/lib/python3.5/lib-dynload', '/usr/local/python3/lib/python3.5/site-packages']
开源模块的使用
开源模块地址 https://pypi.org/
#下载
wget https://files.pythonhosted.org/packages/c4/22/167ec8e203b0f930582a82a1bfcf7faf9d14af3a0d6abc807dbb22ed52f8/PyTyrion-1.0.1.tar.gz
cd PyTyrion-1.0.1
python3 setup.py build #编译安装
python3 setup.py install
[root@zabbix PyTyrion-1.0.1]# python3
Python 3.5.2 (default, May 11 2019, 11:00:44)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import Tyrion #导入模块
方法二在线安装
国内安装源(豆瓣): http://pypi.doubanio.com/simple/
国内安装源(阿里云): http://mirrors.aliyun.com/pypi/simple/
[root@zabbix PyTyrion-1.0.1]pip3 install PyTyrion #安装
[root@zabbix PyTyrion-1.0.1]pip3 uninstall PyTyrion #卸载
[root@zabbix PyTyrion-1.0.1]# pip3 install PyTyrion #安装
Collecting PyTyrion
Downloading http://mirrors.aliyun.com/pypi/packages/c4/22/167ec8e203b0f930582a82a1bfcf7faf9d14af3a0d6abc807dbb22ed52f8/PyTyrion-1.0.1.tar.gz
Installing collected packages: PyTyrion
Running setup.py install for PyTyrion ... done
Successfully installed PyTyrion-1.0.1
使用pip命令的时候如果系统中有python2和python3,而使用python3,需要进入python3的安装目录,使用pip3或者做软连接
升级python3里的pip3也是如此:pip3 install --upgrade pip 否则默认升级的是python里的pip命令
修改下载源为国内
[root@zabbix bin]# pip3 install -i http://pypi.doubanio.com/simple/ paramiko --trusted-host pypi.doubanio.com
[root@zabbix bin]# python3
Python 3.5.2 (default, May 11 2019, 11:00:44)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
包(Package)
执行 login.py
在python3中可以直接导入目录,但是在python2中不行,因为这样还不是一个包(Package)
把 目录 变成一个 包(Package) 只需要在目录底下创建一个 __init__.py 空文件即可、这样python2也能导入
执行login.py正常导入同级目录下的模块:
跨模块绝对路径导入:
# -*- coding:utf-8 -*-
import sys,os
print(dir())
print(__file__)
print(os.path.abspath(__file__)) #获取绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)
sys.path.append(BASE_DIR)
from crm import settings 导入上一级目录crm里的settings
def login_admin(name):
print(name,'登陆页面')
跨模块相对路径导入:必须满足如下两个条件:
1、文件夹中必须有 __init__.py ,该文件可以为空,但必须存在该文件
2、不能作为顶层模块来执行该文件中的py文件(不能作为主函数入口)
from . import linyao
from ..test import linyaohong