使用Pipenv管理Python包和虚拟环境

什么是Pipenv?

Pipenv是Python官方推荐的包管理工具。它结合了Pip和Virtualenv的功能,以及Bundler和NPM等其他语言的包装工具的最佳功能。这样可以简化安装包和管理虚拟环境的工作流程。

安装Pipenv

在安装Pipenv之前,您需要在系统上安装Python。

如果您使用的是Ubuntu 17.10或更高版本,则可以直接从Pypa ppa安装Pipenv:

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

其他发行版应首先安装Pip并使用它来安装Pipenv:

sudo apt install python-pip
pip install pipenv

使用Pipenv

  1. 为示例Python项目创建目录: mkdir python-example && cd python-example
Creating a virtualenv for this project…
Using /home/username/miniconda3/bin/python3.6m (3.6.4) to create virtualenv…
⠋Running virtualenv with interpreter /home/username/miniconda3/bin/python3.6m
Using base prefix '/home/username/miniconda3'
New python executable in /home/username/.local/share/virtualenvs/python-example-YJNpmGYi/bin/python3.6m
Also creating executable in /home/username/.local/share/virtualenvs/python-example-YJNpmGYi/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /home/username/.local/share/virtualenvs/python-example-YJNpmGYi

Creating a Pipfile for this project…如果省略该--python选项,将使用系统的默认Python版本创建环境。
  1. 在目录中创建虚拟环境: pipenv --python 3.6
  2. ls检查目录的内容; 你会看到 Pipfile已经自动创建。在文本编辑器中查看此文件~/python-example/Pipfile
 [[source]]
   url = "https://pypi.python.org/simple"
   verify\_ssl = true
   name = "pypi"

dev-packages

packages

requires

python\_version = "3.6"
  1. 安装Numpy。Pipenv会自动将依赖项添加到[packages]Pipfile中的部分。此外,Pipenv创建了一个名为的文件Pipfile.lock,其中包含使用的确切版本的哈希值。这可以确保当其他开发人员为此项目安装依赖项时,它们最终都将使用完全相同的版本。pipenv install numpy
  2. 安装特定版本的Pytest作为开发依赖项:pipenv install --dev 'pytest>=3.*'
  3. 查看这些安装对Pipfile所做的更改:
[[source]]

url = "https://pypi.python.org/simple"

verify_ssl = true

name = "pypi"

[dev-packages]

pytest = ">=3.*"

[packages]

numpy = "*"

[requires]

python_version = "3.6"

由于在安装Numpy期间未指定任何版本,因此Pipfile指定任何version("*")都可以接受。安装的特定版本记录在Pipfile.lock

注意

如果在没有Pipfile的目录中安装软件包,Pipenv将使用系统的默认Python版本自动在该目录中创建新环境。这意味着本节中的命令可以压缩为两个步骤: pipenv install numpy pipenv install --dev pytest

使用虚拟环境

  1. 从包含Pipfile的目录中,在新环境中启动shell: pipenv shell 这是类似于运行source env/bin/activatevirtualenv
  2. 从这个shell里面启动Python解释器: python
  3. 您应该能够导入任何已安装的软件包: >>> import pytest >>> import numpy as np
  4. 退出shell(类似于停用环境virtualenv): exit
  5. 以图表形式查看项目的依赖项:
pipenv graph
numpy==1.14.2
pytest==3.5.0
- attrs [required: >=17.4.0, installed: 17.4.0]
- more-itertools [required: >=4.0.0, installed: 4.1.0]
- six [required: >=1.0.0,<2.0.0, installed: 1.11.0]
- pluggy [required: >=0.5,<0.7, installed: 0.6.0]
- py [required: >=1.5.0, installed: 1.5.3]
- setuptools [required: Any, installed: 39.0.1]
- six [required: >=1.10.0, installed: 1.11.0]

该图包括您安装的软件包及其依赖项。

6. 找到虚拟环境的二进制文件: pipenv --venv /home/user/.local/share/virtualenvs/python-example-YJNpmGYi

下一步

有关命令和选项的完整列表,请参阅Pipenv GitHub存储库官方文档

想要了解更多关于python等教程,请前往腾讯云+社区学习更多知识。

本文的版权归 阿小庆 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

在Centos 5.2下编译安装LAMP

首先使用Virtualbox安装一台CentOS 5.2的虚拟机,网络连接采用 Host-only Adapter,这样主客机之间可以互相访问,但是客机不能够上...

11820
来自专栏张首富-小白的成长历程

用户相关的文件及命令

Linux system每个文件和进程,都需要对应一个用户和组, Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×...

14740
来自专栏张伟博客

windows7 下,在CMD命令模式下,如何添加永久路由?

双网卡之间互相访问原理其实很简单,互相设置对方的IP为自己的这张网卡的网关就足够了。为了让机器重启动后依然有效,在使用route 命令添加路由的时候加上 -p ...

1.3K10
来自专栏一个爱瞎折腾的程序猿

windows下react-native环境搭建

到android-studio下载SDK。 运行installer_r24.4.1-windows.exe安装、或zip解压出来的SDK Manager.ex...

1.6K20
来自专栏布尔

用c#添加Networkservice对文件夹的写权限

      一般的bs程序都会涉及到上传文件,这就要求network service用户有对文件夹的写权限,通常情况下我们都是用打包时调用打包程序的脚本去设置权...

40560

如何自动地将代码从Git平台部署至组件容器

将源代码从Git平台部署至组件容器有很多种可以选择的方法,包括重新部署整个容器,通过卷即时重新部署,或者使用“git clone”的方法。但是,当这个过程自动化...

24990
来自专栏搜云库

CentOs7.3 ssh 免密登录

环境 三台虚拟机(IP): 192.168.252.121 192.168.252.122 192.168.252.123 1.修改主机名 修改三台主机名,以此...

39950
来自专栏云原生架构实践

JHipster生成微服务架构的应用栈(四)- 网关微服务示例

默认端口号是8080,也可以自己输入端口号,注意不要和别的微服务和进程的端口号冲突。

42120
来自专栏散尽浮华

SCP和Rsync远程拷贝的几个技巧

scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加...

1.5K70
来自专栏FreeBuf

Web应用手工渗透测试——用SQLMap进行SQL盲注测试

作者 Taskiller 简介 本文主要关注SQL注入,假设读者已经了解一般的SQL注入技术,在我之前的文章中有过介绍,即通过输入不同的参数,等待服务器的反应,...

378100

扫码关注云+社区

领取腾讯云代金券