专栏首页测试游记使用pipenv管理python环境

使用pipenv管理python环境

在一台新的机器上执行py文件的时候经常会遇到环境的问题。

现有的一些解决方案:

  • requirements.txt
  • python2的virtualenv方案
  • python3的venv方案
  • pipenv pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv。 Pipfile和pipenv本来都是Kenneth Reitz的个人项目,后来贡献给了pypa组织。 Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。

安装

$ pip install pipenv

创建环境

在项目路径下使用

$ pipenv install
# 也可以按如下方式指定版本
$ pipenv --python 3.6

创建环境

激活环境

$ pipenv shell

使用exit可以退出环境

激活环境后可以直接使用python xxx.py以该环境运行脚本

也可以使用pipenv run python xxx.py在不激活环境的情况下用以该环境运行脚本

安装第三方库

$ pipenv install flask

也可以在安装第三方库之前,打开Pipfile修改一下里面的url为国内阿里云第三方库地址:

https://mirrors.aliyun.com/pypi/simple

[[source]]
name = "pypi"
url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true[dev-packages][packages]
flask = "*"[requires]
python_version = "3.7"

安装flask

查看当前环境的依赖

$ pipenv graph

可以看出我们安装了一个Flask的同时,安装了它的4个依赖,其中Jinja2也安装了它的一个依赖

也可以使用pipenv shell进入虚拟环境后使用pip list查看环境

测试

编写一个简单的flask脚本进行测试

app.py

from flask import Flask
app = Flask(__name__)@app.route('/')def index():
return '<h1>Hello Pipenv</h1>'

开发环境移植

在一个新的环境中,将代码和Pipfile复制过去

由于Pipfile里面没有所有子依赖包或者确定的版本,因此该安装可能会更新未指定模块的版本号

$ pipenv install --dev

新开发环境测试

$ pipenv run flask run

生产环境移植

开发环境和生产环境稍微有点区别,开发环境中可能有一些不稳定的版本或依赖,而生产环境一般都比较固定

如果想只安装在开发环境才使用的包:

$ pipenv install <第三方库> --dev

运行以下命令,把当前环境的模块lock住, 它会更新Pipfile.lock文件,该文件是用于生产环境的,不应该人为编辑它。

$ pipenv lock

然后只需要把代码Pipfile.lock放到生产环境,运行下面的代码,就可以创建和开发环境一样的环境,Pipfile.lock里记录了所有包和子依赖包的确切版本,因此是确定构建

$ pipenv install --ignore-pipfile

卸载包

$ pipenv uninstall flask

其他

当前虚拟环境目录

$ pipenv --venv

当前项目根目录

$ pipenv --where

检查安全性和PEP508

$ pipenv check

所以可以直接通过将Pipfile加入到版本管理来进行环境的管理

至于Pipfile.lock是否要加入就看具体需求了

本文分享自微信公众号 - 测试游记(zx94_11),作者:zx钟

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ARTS第三周

    判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

    zx钟
  • Jenkins(一)

    Jenkins2.x支持pipeline as code,可以通过代码来「描述」部署流水线。

    zx钟
  • Root Framework中的变量与常量

    Robot Framework中的层级关系为:测试项目 > 测试套件 > 测试用例

    zx钟
  • 给你一根杠杆,撬起万亿的小程序红利市场!

    从今年年初开始,小程序毫无预兆的出现在了人们的眼前,很多时候,人们对于新鲜的事物,总是抱着先观望的态度,殊不知,总有一部分敢于先尝第一口的人,往往是最好吃的那一...

    企鹅号小编
  • 警惕开发骗局!微信小程序加盟“政府扶持,官方授权”

    2017年微信小程序自诞生以来为各行各业带来了巨量的商机,也是广大的创业者和实体经济能够把握的互联网历史上增长最快、覆盖最广的机遇。很多知名商家成为第一批“吃螃...

    速成应用小程序开发平台
  • 腾讯课堂 IMWeb 七天前端求职提升营 Day 3

    本次的系列博文主要是针对 腾讯课堂七天前端求职提升营 课程中,所推送的面试题目及编程练习的一次汇总,期间还包括三次直播课的分享,均由腾讯导师给大家讲解,该系列博...

    Nian糕
  • 互联网创业,为什么要跟马化腾走

    商业与生活|xiaopeizhu8 文|朱晓培 今年的乌镇大会上,除了例行的丁磊饭局,又多了一个“东兴局”。据说是京东刘强东和美团王兴请客,但坐在中间的是腾讯马...

    企鹅号小编
  • 直播平台源码搭建教程:微信小程序中的直播如何去掉水印

    var services = require('../../lib/service')

    云豹kj的晨曦
  • C++容器和算法

    容器:某一类型数据的集合。 C++标准顺序容器包括:vector,list,queue 容器初始化 vector<int> t; ...

    猿人谷
  • [业界方案] Yarn的业界解决方案和未来方向

    本文通过分析学习两篇文章来看目前工业界可能偏好的解决方案,也顺便探寻下Yarn的未来发展方向。

    罗西的思考

扫码关注云+社区

领取腾讯云代金券