Python基础系列之--阶段总结与补充【16】

目标

  • 回顾Python面向对象
  • ✅掌握pipenv虚拟环境的基本使用

0

在学习过程中也遇到一些疑惑,摸索了不同的形式、方法,有了一些结论,诸如:

  1. 文章的面向群体–有一定编程基础的;属于个人学习📝,不可能面面俱到;
  2. 文章的形式–如果没有递进深入与实例,仅停留在基本;那是刷流氓;
  3. 学习的目标依旧是–向机器学习靠拢,出于好奇,挑战下自我。

也许好奇才是真正让我学习Python的原有;

不论对错,过程中渐渐培养了专注、思考、探索、总结,想必是值得。
勇敢走出舒适区,去做有意思的事,好好学数学 😆

Python基础系列到此就要告一段落了,该部分主要包含了以下几件事

  1. 迈出了开始学习Python的第一步;
  2. 归纳总结常用的数据类型、方法、函数等,可能会穿插些稍微深入些的知识点;
  3. 查漏补缺,在学习过程中更加深入了理解一些概念、原理。

接下来的安排

因为Node.js属于日常工作范畴,工作之余换种心情😆

  1. 继续学习Python相关知识,模块、框架;
  2. 开始试着写项目,至于类型,在过程中再确定吧;
  3. 开始曾经落下的数学📚,可能会分享相关内容,只是写文章太费时间了。。。;
  4. 希望在不久的将来,开始试着学习机器学习。

第一部分 Python 面向对象

第二部分 pipenv虚拟环境

1. pipenv 是什么

官网地址
Pipenv is a production-ready tool that aims to bring the best of all packaging worlds to the Python world. It harnesses Pipfile, pip, and virtualenv into one single command.

大概意思就是:Pipenv 可以为你的项目自动地创建和管理一个虚拟环境。

如果对Node熟悉的话,应该了解:

  1. nvm 管理nodejs的版本,可自由切换;
  2. npm: 管理工具,可方便下载第三方模块;
  3. package.json: 项目文件,记录一些模块依赖信息、配置信息等

大概可以理解为:对比pipenv:

pipenv = nvm + npm;

当然这只是个简单的。便于学习的对比;

如有不对❌,敬请指出

2. pipenv 能解决什么❓

  1. 你不再需要手动创建虚拟环境,Pipenv 为你自动创建。简单地说就是 pipenv 和 virtualenv 一起工作。
  2. 管理 requirements.txt 文件会导致一些问题,所以 Pipenv 用 Pipfile 和 Pipfile.lock 替代 requirements.txt,更适合于一般的使用场景。
  3. 安全。广泛地使用 Hash 校验,能够自动曝露安全漏洞。
  4. 随时查看图形化的依赖关系。
  5. 通过加载 .env 文件简化开发流程。

3. 安装使用

官网地址有对应的安装方法,下边以Mac为例;

前体是已经安装过Python、pip

$ brew install pipenv

4. 实例一

目标

  • 初识环境
  • 掌握基本的操作

多余代码太多,实例一共包含以下几步

1. 初始化一个虚拟环境;
2. 了解下虚拟环境内容;
3. 新建文件,并运行;
# 1. 初始化一个虚拟环境;
hhw-4:pythonEnv hhw$ pipenv install
Creating a virtualenv for this project…
Pipfile: /Users/hhw/Desktop/pythonEnv/Pipfile
Using /usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7 (3.7.3) to create virtualenv…
⠋ Creating virtual environment...Already using interpreter /usr/local/Cellar/pipenv/2018.11.26_2/libexec/bin/python3.7
Using real prefix '/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/hhw/.local/share/virtualenvs/pythonEnv-Vx1xxtfj/bin/python3.7
Also creating executable in /Users/hhw/.local/share/virtualenvs/pythonEnv-Vx1xxtfj/bin/python
Installing setuptools, pip, wheel...
done.

✔ Successfully created virtual environment!
Virtualenv location: /Users/hhw/.local/share/virtualenvs/pythonEnv-Vx1xxtfj
Creating a Pipfile for this project…
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock (a65489)!
Installing dependencies from Pipfile.lock (a65489)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/000:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
hhw-4:pythonEnv hhw$
# 3. 新建文件,并运行;
# 下载requests模块
hhw-4:pythonEnv hhw$ pipenv install requests
Installing requests…
Adding requests to Pipfile's [packages]…
✔ Installation Succeeded
Pipfile.lock (444a6d) out of date, updating to (a65489)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success!
Updated Pipfile.lock (444a6d)!
Installing dependencies from Pipfile.lock (444a6d)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 5/5 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
hhw-4:pythonEnv hhw$ vim test.py

用 ls 命令查看当前项目目录,你会发现有两个文件:Pipfile 和 Pipfile.lock 。

Pipfile 里有最新安装的包文件的信息,如名称、版本等。用来 在重新安装项目依赖或与他人共享项目时,你可以用 Pipfile 来跟踪项目依赖。
Pipfile.lock 则包含你的系统信息,所有已安装包的依赖包及其版本信息,以及所有安装包及其依赖包的 Hash 校验信息。

# test.py 内容
import requests
response = requests.get('https://httpbin.org/ip')
print('你的 IP 地址是 {0}'.format(response.json()['origin']))
$ pipenv run python main.py
你的 IP 地址是 8.8.8.8

实例一 总结

以上展示了如何创建一个虚拟环境、如何下载一个模块,在虚拟环境中运行;

也许不太直观,画了两个图,虚拟环境自己玩儿自己的。

虚拟环境

按实际需求来

  1. 你的代码给别人,别人怎么正常运行?
  2. pipenv 常用命令有哪些?

问题一:冻结Pipfile;类比package-lock.json

冻结就相当于将项目所使用的第三方库列表进行打包输出,类比package-lock.json
通过更新Pipfile.lock来冻结库名称及其版本,以及其依赖关系的列表。需要使用lock参数:pipenv lock

被人怎么用?类比 npm install
pipenv install
Pipenv会在项目文件夹下自动寻找Pipfile和Pipfile.lock文件,创建一个新的虚拟环境并安装必要的软件包。

问题二: 可选参数

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
--update 更新Pipenv & pip
--where 显示项目文件所在路径
--venv 显示虚拟环境实际文件所在路径
--py 显示虚拟环境Python解释器所在路径
--envs 显示虚拟环境的选项变量
--rm 删除虚拟环境
--bare 最小化输出
--completion 完整输出
--man 显示帮助页面
--three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本)
--python TEXT 指定某个Python版本作为虚拟环境的安装源
--site-packages 附带安装原Python解释器中的第三方库
--jumbotron 不知道啥玩意....
--version 版本信息
-h, --help 帮助信息
# 命令参数
Commands:
check 检查安全漏洞
graph 显示当前依赖关系图信息
install 安装虚拟环境或者第三方库
lock 锁定并生成Pipfile.lock文件
open 在编辑器中查看一个库
run 在虚拟环境中运行命令
shell 进入虚拟环境
uninstall 卸载一个库
update 卸载当前所有的包,并安装它们的最新版本
# 定位项目路径
$ pipenv --where
# 定位虚拟环境
$ pipenv --venv
# 定位Python解释器
$ pipenv --py
# 安装包
$ pipenv install
# 卸载所有的包:
$ pipenv uninstall --all
# 依赖关系
$ pipenv graph
# 生成lock文件
$ pipenv lock
# 安装开发环境依赖:
$ pipenv install pytest --dev

5 实例二

目标

  • vscode 配置

实例一中直接运行,已经完全ok,但是写代码,我还是不会选择文本编辑器,,,

打开vscode,ヾ(。`Д´。)我擦,找不到requests,思考片刻,因为setting.json中已经配置了python解释器【系统级别的】;
但是之后我们都不在这么玩儿了,毕竟会乱的
同样建议再项目目录中配置各自的配置项目




配置完毕

hhw-4:pythonEnv hhw$ python3 test.py 
Traceback (most recent call last):
File "test.py", line 1, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
hhw-4:pythonEnv hhw$ pipenv run python test.py
你的 IP 地址是 112.64.61.61, 112.64.61.61

一直没找到一个合适的图来描述pipenv…