Pipenv一键搭建python虚拟环境的方法

作者:木子昭 时间:2022-07-15 03:49:41 

由于python2和python3在部分语法上不兼容, 导致有人打趣道:"Python2和Python3是两门语言"

对于初学者而言, 如果同时安装了python2和python3, 那运行python程序就可能会遇到2和3混用的尴尬

为解决python不同版本混用的尴尬,避免污染系统python的依赖包环境, 我们需要创建虚拟环境, 将python2和python3隔离使用

pipenv的优势:

以前我们搭建虚拟环境需要学习使用virtualenv和virtualenvwrapper,在虚拟环境内管理软件依赖包需要学习使用pip, 而有了pipenv, 前面几个就可以不用学了...

以前我们需要将虚拟环境依赖包的导出为 requirements.txt , 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成 PipfilePipfile.lock , Pipfile会随着项目,当我们安装时只需在 PipfilePipfile.lock 所在的目录下运行 pipenv install

安装pipenv

方法一: ubuntu用apt安装


sudo apt install software-properties-common python-software-properties
sudo add-apt-repository ppa:pypa/ppa
sudo apt update
sudo apt install pipenv

方法二: windows用pip安装


pip install pipenv

方法三: MacOS直接使用brew安装


brew install pipenv

快速创建并进入虚拟环境

前提条件: 系统已安装python2和python3


# 创建python3环境
pipenv --three
# 创建python2环境
pipenv --two

# 在上一步新建环境的目录下,运行此命令才有效
pipenv shell

Pipenv一键搭建python虚拟环境的方法 

小技巧: 如果子级目录的父级目录已经创建过虚拟环境, 则子级目录无法创建虚拟目录(子级目录无法生成Pipfile, 子级默认会使用父级的虚拟环境), 如果确实需要在子级目录创建独立的虚拟环境,可以运行 pipenv --where 获取父级虚拟环境的名字, 根据虚拟环境的前半部分名字, 确定父级目录的位置, 然后删除父级目录下的 Pipfile , Pipfile.lock , 运行 exit 退出父级虚拟环境,然后回到子目录,运行 pipenv --three 创建子目录的虚拟环境即可

在虚拟环境管理依赖包

安装依赖包 yagmail requests


pipenv install yagmail requests

查看已安装软件


pipenv graph

Pipenv一键搭建python虚拟环境的方法

删除依赖包yagmail


pipenv uninstall yagmail

退出虚拟环境


exit

扩展命令(不看也没关系)

查看虚拟环境python解释器所在位置


pipenv --py

查看虚拟环境所在位置


pipenv --venv

使用更底层的命令 pip freeze


pipenv run pip freeze

只在安装开发阶段使用的软件包(和npm类似)


pipenv install pytest --dev

安装Pipfile.lock的所有包(完整移植开发环境)


pipenv sync

小结:

pipenv借鉴了npm管理包的方式, 与virtualenv和virtualenvwrapper相比, pipenv对新书要更友好一些,推荐学习~

来源:https://www.jianshu.com/p/1441169b3dbe

标签:python,pipenv
0
投稿

猜你喜欢

  • 运筹学-Python实现图论与最短距离

    2022-10-24 05:58:59
  • SQL SERVER 将XML变量转为JSON文本

    2024-01-21 23:38:46
  • 在windows下Python打印彩色字体的方法

    2023-05-19 07:03:32
  • rs.getrows的使用方法

    2008-04-05 14:01:00
  • 用于ETL的Python数据转换工具详解

    2022-11-09 18:29:05
  • Python使用pickle模块报错EOFError Ran out of input的解决方法

    2021-06-03 02:56:57
  • GoLang基础学习之go test测试

    2024-02-06 16:28:19
  • 将string类型的数据类型转换为spark rdd时报错的解决方法

    2023-05-03 00:35:12
  • php中支持多种编码的中文字符串截取函数!

    2023-09-27 02:08:15
  • Python RuntimeError: thread.__init__() not called解决方法

    2022-12-22 17:11:46
  • openCV实现图像融合的示例代码

    2022-05-20 03:28:16
  • Python中的集合介绍

    2022-09-10 03:49:52
  • 关系型数据库与非关系型数据库简介

    2024-01-19 05:36:44
  • python冒泡排序算法的实现代码

    2021-09-08 03:48:27
  • Python+pytorch实现天气识别

    2021-09-23 18:49:13
  • Python装饰器结合递归原理解析

    2023-07-13 22:24:00
  • jquery实现表单验证并阻止非法提交

    2023-07-02 05:31:28
  • SQL常用数据库操作命令使用方法

    2007-08-22 13:24:00
  • python使用jenkins发送企业微信通知的实现

    2022-06-06 19:40:16
  • 详解js根据百度地图提供经纬度计算两点距离

    2024-04-29 13:40:51
  • asp之家 网络编程 m.aspxhome.com