PyCharm+Pipenv虚拟环境开发基础

本文测试环境

  • Windows 7(SP1) 64bits
  • Pythn 3.8.4
  • Pycharm 2020.1

为何要使用虚拟环境

对这个问题,廖雪峰老师的描述是这样的:
“在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。全部第三方的包都会被pip安装到Python3的site-packages目录下。html

若是咱们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。若是应用A须要jinja 2.7,而应用B须要jinja 2.6怎么办?python

这种状况下,每一个应用可能须要各自拥有一套“独立”的Python运行环境”git

除了上面廖雪峰老师描述的这种本身在不一样版本Python环境下开发项目状况外,在开发过程当中,咱们经常会在例如github这种源码网站下载、试用并定制各类Python半成品,此时原做品每每存在与本身机器的安装包差距,所以,当在本身环境下调试经过原项目时也离不开虚拟环境的使用——你总不会一上来就使用本身的环境工具修改下载的半成品工程,对不对?github

关于pip

pip确定是Python新手必需学习使用的工具之一,它是python下的包管理工具,主要用于从pypi下载所需的python包,可是pip不会自动处理包之间的依赖关系。shell

virtualenv

virtualenv是一个虚拟环境管理工具,使用virtualenv能够建立一个彻底隔离的环境,但virtualenv只能建立基于本机已存在的python版本的虚拟环境;使用virtualenv建立完成环境之后,可使用pip安装python包,也可使用conda安装python包。django

virtualenv和pip配合使用,PyCharm内置提供virtualenv支持。安全

关于conda

conda结合了pip和virtualenv二者的功能,使用conda能够建立任意python版本的虚拟隔离环境,并且conda仍是一个包管理工具,不但能够安装python包,并且能够安装其余语言的包,更重要的是conda具备完美的包依赖关系处理能力,能够轻松的安装所需的包而不用过度的去手动处理各类包之间的依赖关系;在使用conda安装包时,能够修改安装源为https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ide

https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/工具

conda和anaconda

conda是一个通用包管理器,anaconda是python发行版,conda是用anaconda打包的;安装anaconda后会有不少预置的python包,其中也包括conda工具,能够安装miniconda以得到一个纯净的环境,而后使用conda安装所需的包。学习

pipenv简介

pipenv 是 Pipfile 主要倡导者、requests 做者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、clickrequests和virtualenvPipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。

你能够把它看作是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt)。

如何使用Pipenv

即便你已经安装了PyCharm(注意我目前版本为2020.1)也要求先安装pipenv,命令以下:

pip install pipenv

使用Pipenv时,几乎什么都没必要作,Pipenv会自动帮你管理依赖。Pipenv会在你建立虚拟环境时自动建立Pipfile和Pipfile.lock文件(若是不存在),而且会在你使用pipenv install和pipenv uninstall命令安装和卸载包时自动更新Pipfile和Pipfile.lock。

Pipfile用来记录项目依赖包列表,而Pipfile.lock记录了固定版本的详细依赖包列表。

Pipenv优点

(1)pipenv集成了pip,virtualenv二者的功能,且完善了二者的一些缺陷。

(2)过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。

(3)各个地方使用了哈希校验,不管安装仍是卸载包都十分安全,且会自动公开安全漏洞。。

(4)经过加载.env文件简化开发工做流程。

(5)支持Python2 和 Python3,在各个平台的命令都是同样的。

建立pipenv:
pipenv

启动pipenv:

pipenv shell(为存在虚拟环境可自动建立)

退出pipenv:
exit

查找全部安装包:
pip list

环境内包的依赖展现:

```pipenv graph

查找虚拟环境的路径:
`pipenv --venv`

卸载安装包:
`pipenv uninstall`

【建议】在使用pipenv以前,必须完全的忘记pip这个东西。

新建一个准备当环境的文件夹pipenvtest,并cd进入该文件夹:
pipenv --three 会使用当前系统的Python3建立环境

pipenv --python 3.6 指定某一Python版本建立环境

pipenv shell 激活虚拟环境

pipenv --where 显示目录信息
/home/jiahuan/pipenvtest

pipenv --venv 显示虚拟环境信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW

pipenv --py 显示Python解释器信息
/home/jiahuan/.local/share/virtualenvs/pipenvtest-9KKRH3OW/bin/python

pipenv install requests 安装相关模块并加入到Pipfile

pipenv install django==1.11 安装固定版本模块并加入到Pipfile

pipenv graph 查看目前安装的库及其依赖

## 在部署环境安装依赖
过去,当咱们须要在一个新的环境,好比部署上线环境安装全部依赖时,咱们须要重复上面的多条命令:

$ virtualenv venv  # 建立虚拟环境
$ . venv/bin/activate  # 激活虚拟环境
(venv)$ pip install -r requirements.txt  # 安装requirement.txt中记录的依赖

如今,使用Pipenv则只须要执行pipenv install,它会自动安装Pipfile中记录的依赖:

> $ pipenv install
## 区分开发依赖
之前,使用requirements.txt时,咱们经过会单首创建一个requirements-dev.txt文件来手动加入开发依赖。好比项目开发时才会用到pytest,那么你须要手动建立这个文件,而后写入requirements.txt:

> pytest==1.2.3

在新的开发环境安装依赖时,你须要安装这个文件中的依赖:

> (venv)$ pip install -r requirements-dev.txt

如今:
使用Pipenv时,你只须要在安装pytest时添加一个–dev选项,它会自动被分类为开发依赖(写入Pipfile的dev-packages一节中):

> $ pipenv install pytest --dev

在新的开发环境安装依赖时,也只须要在pipenv install命令后添加–dev选项便可一并安装开发依赖:

`$ pipenv install --dev`

# 未完待续......
# 主要参考资料
* https://alexgoke.github.io/2019/07/31/Pipenv%E5%AF%B9%E6%AF%94virtualenv/
* https://www.cnblogs.com/zhaoweihang/p/10794694.html
* https://www.liaoxuefeng.com/wiki/1016959663602400/1019273143120480

* pycharm实如今虚拟环境中引入别人的项目,https://www.jb51.net/article/182237.htm
相关文章
相关标签/搜索