模块
Python标准模块
模块的下载
自己下载(官网)
![](https://i-blog.csdnimg.cn/blog_migrate/9ae50e2dfef306d031bdd7da8df80e7e.png)
使用命令行pip语句自动下载
![](https://i-blog.csdnimg.cn/blog_migrate/13bf07caf781fb44878f16f96678f5c3.png)
pip常用语句合集
pip命令实例 | 说明 |
pip download SomePackage[==version]
| 下载扩展库的指定版本,不安装 |
pip freeze [> requirements.txt]
|
以
requirements
的格式列出已安装模块
|
pip list
|
列出当前已安装的所有模块
|
pip install SomePackage[==version]
|
在线安装
SomePackage
模块的指定版本
|
pip install SomePackage.whl
|
通过
whl
文件离线安装扩展库
|
pip install package1 package2 ...
|
依次(在线)安装
package1
、
package2
等扩展模块
|
pip install -r requirements.txt
|
安装
requirements.txt
文件中指定的扩展库
|
pip install --upgrade SomePackage
|
升级
SomePackage
模块
|
pip uninstall SomePackage[==version]
| 卸载SomePackage模块的指定版本 |
pip下载常见问题
1、下载速度慢——使用镜像源
pip install -i <国内镜像> <第三方库名称>
离线安装
whl包安装
pip install XlsxWriter-1.0.5-py2.py3-none-any.whl
tar.gz包安装或安装zip包
pip和conda的区别
打开conda命令行
![](https://i-blog.csdnimg.cn/blog_migrate/7d528ad8b31fbdac0612eb34f720d6d6.png)
运行环境展示:
创建新环境
conda create --name <env_name> <package_names>
更多管理环境
activate <env_name>
root deactivate
conda env list
conda create --name <new_env_name> --clone <copied_env_name>
conda remove --name <env_name> --all
安装扩展包
conda install --name <env_name> <package_name
conda install <package_name>
• <package_name>即要安装的包名。包名两边不加尖括号“<>”
卸载安装包
conda remove --name <env_name> <package_name>
conda remove <package_name>
• <package_name>即要卸载包的名称。包名两边不加尖括号“<>”。
更新所有包
conda update --all
更新指定包
conda update <package_name>
常用的模块:skelearn、numpy、matplotlib、scipy等等
描述及其内容查询(直接在console里面输入即可)
help(module-name)
>>> import math
>>> help(math)
Help on built-in module math: NAME
math
DESCRIPTION
This module provides access to the
mathematical functions
defined by the C standard.
-- More --
dir(obj)
>>> dir(math)
[‘ __doc __', '__file __', ' __name __',
'acos', 'asin', 'atan', 'atan2', 'ceil',
'cos', 'cosh', 'degrees', ‘e', 'exp',
'fabs', 'floor', 'fmod', 'frexp', 'hypot',
'ldexp', 'log', 'log10', 'modf', ‘pi',
'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan',
'tanh']
模块搜索路径sys.path
该方法适用于自己构建的module与正在运行的py不在同一个位置,由于编辑器查找完同目录的module后,会再查找path中的,所以我们可以使用sys.path.append通过增加临时搜索路径,使得在不同位置的module也可以调用。
import sys
sys.path.append("c:\\pythompa\works")
>>> import sys
>>> sys.path
['D:\\Program\\Anaconda\\python39.zip',
'D:\\Program\\Anaconda\\DLLs',
'D:\\Program\\Anaconda\\lib',
'D:\\Program\\Anaconda',
'',
'D:\\Program\\Anaconda\\lib\\site-packages',
'D:\\Program\\Anaconda\\lib\\site-packages\\win32',
'D:\\Program\\Anaconda\\lib\\site-packages\\win32\\lib',
'D:\\Program\\Anaconda\\lib\\site-packages\\Pythonwin',
'C:\\Users\\Administrator\\Desktop\\11']
为了帮助理解,再举一个实例
上图中,fangchengjie这个.py位于D盘的mokuai里面,而ceshi2位于C盘中,通过使用sys.path.append,可以实现不同位置的直接调用 。
如此一来就可以调用了,代码如下
import sys
sys.path.append(r"D:\mokuai")
from fangchengjie import solution
print(solution(4,5,3))
调用模块
import moduels( 模块名字)
import moduels (模块名字) as XX
from modules( 模块名字 ) import func(方法或类)# 也可重命名:from modules( 模块名字 ) import func( 方法) as XX
from package.modules import func(方法或类)也可以用别名表示,from modules( 模块名字 ) import func( 方法) as XX
from moduels import *
模块整体和部分引入
模块整体引入
import module_name
>>> import math
>>> math.sin(30)
-0.9880316240
模块部分引入
from module import func
>>> from math import sin
>>> sin(30)
-0.9880316240
模块整体和部分重命名
import 模块名 as 别名
>>> import math as m
>>> m.sin(30)
-0.9880316240
from 模块名 import 对象名 as 别名
# 可以减少查询次数,提高执行速度
>>> from math import sin as f
>>> f(30)
-0.9880316240
.pyc文件(按照字节编译的文件类型)
Python中的包
![](https://i-blog.csdnimg.cn/blog_migrate/d5477d19ba4c3a9fb64d91e1f1cf8340.png)
从包中导入模块
import [包名1.[包名2…]].模块名
import urllib.request
#导入urllib包中的request模块
urllib.request.urlopen(url_robots) #调用模块中的方法
from [包名1.[包名2…]].模块名 import 函数名
from urllib.request import urlopen
urlopen(url)
不同包之间的相互调用
![](https://i-blog.csdnimg.cn/blog_migrate/6c07d22cd5ba4ead46da902ff7429a18.png)
模块的制作
# text.py文件
def add(a,b)
return a + b
def product(a,b)
return a*b
#调用
>>> from text import add
>>> result = add(11, 12)
23
模块测试
# text.py文件
def add(a,b)
return a + b
result = add(12,22) #测试信息
print(“int test.pyfile,12+22={}”.format(result))
#调用
>>> import text
>>> result = add(11, 12)
>>> print(result)
int test.pyfile,12+22=34
23
其中一个重要的属性就是__name__属性
通过__name__属性,可以实现在脚本运行时:
- 假如是单独运行该module,那么运行后面的测试代码,程序员可以看到自己设计的module是否符合自己的要求
- 假如是导入该module后在程序中使用,则该测试代码不会运行,(类似于被注释掉的感觉)
实例
# text.py文件
def add(a,b):
return a+b
def product(a,b):
return a*b
#用来进行测试
if __name__=='__main__':
rel=add(1,2)
print('int test.py file,1+2=%d'%rel)
# a.py文件中调用模块
>>> from text import add
>>> result = add(1,2)
>>> print(result)
3
上述代码,假如直接测试该模块,那么__name__就等于__main__后面的测试代码就会运行,假如该模块是import到程序里面的,那么__name__就不会自动转换为__main__,故后面的代码就不会运行。
模块的发布
(1)将模块放在setup.py包
from distutils.core import setup
setup(
name="itheima",
version="1.0",
description="itheima belongs to itcast",
author="itcast",
py_modules=['suba.aa', 'suba.bb', 'subb.cc', 'subb.dd'] )
python setup.py build
构建后的目录结构
python setup.py sdist
补充知识点(time模块)
>>> strating_time=time.time()
>>> for i in range(4):
>>> print(i**3)
>>> ending_time=time.time()
running_time= strating_time- endinging_time