查看pip支持的文件名和版本_功能强大的pip依赖管理工具pipenv

pip是Python语言的官方包管理器,但是pip在使用的时候有一个问题,就是只能安装为全局的包,假如有两个项目需要使用包的不同版本,那么pip就无能为力了。因此出现了virtualenv这样的工具,可以创建虚拟环境,在虚拟环境中用pip安装的包和全局版本的不会发生冲突。

a3cc82581b0eed07609f0932243dd414.png

因此有大神仿照npm、maven等包管理工具,开发了一个名为pipenv的工具,它集虚拟环境创建、依赖版本锁定、配置文件记录版本等功能于一体,使用起来也极为简单。仅需一条命令即可完成原来virtualenv工作流好几条命令的作用。

安装pipenv

安装pipenv非常简单,直接用pip命令即可安装。

pip install pipenv

安装完毕之后, 在一个空白目录输入下面的命令即可使用pipenv创建和初始化虚拟环境。

pipenv install

默认情况下pipenv创建的虚拟环境目录在用户文件夹下,时间长了会累积很多无用的虚拟环境目录,因此我比较喜欢设置为在项目文件夹下创建虚拟环境。这需要设置PIPENV_VENV_IN_PROJECT环境变量,环境变量的值为空格即可。

9cf76cba4992c186176f5c3f8f54367c.png

这样的话,运行pipenv命令的时候就可以发现,这次虚拟环境创建到了项目文件夹下。另外pipenv还创建了两个新的文件,Pipfile和Pipfile.lock,前者是pipenv的配置文件,后者是锁定文件,记录了详细的包版本配置。这和npm等包管理器的功能是一样的。

95102cdfe746b3eb0c2099ef0b3748cc.png

pipenv使用起来也非常简单,下面是常用的命令。其实一般也就用到安装等命令。

# 安装依赖包pipenv install requests# 安装开发依赖包pipenv install -d autopep8 pylint# 更新虚拟环境和依赖包pipenv update

选择虚拟环境版本

pipenv不仅仅是一个简单的虚拟环境包管理器,它还有一些非常好用的功能,可以极大的方便我们的开发。如果你已经安装了多个版本的Python,或者是Linux系统,有pyenv这个自动安装多版本Python的工具。那么pipenv在创建虚拟环境的时候,就可以使用参数设置版本号。

如果你是Linux系统,并且安装有pyenv,那么就可以随意指定版本号,pyenv会自动下载安装对应的版本。否则的话,只能指定系统已经安装的Python版本, 否则pipenv就会提示找不到该版本的Python。

# 使用Python 3.6pipenv --python 3.6

设置包索引

默认情况下,pipenv会从pip的官方包索引去下载包,下载速度可能比较慢。不过我们可以使用国内的镜像来加快下载速度,修改办法很简单,编辑Pipfile文件,修改url即可。下面使用了清华大学的包索引镜像。

[[source]]name = "pypi"url = "https://pypi.tuna.tsinghua.edu.cn/simple"verify_ssl = true

如果你觉得每次都要设置一次镜像,很麻烦的话,其实也可以通过环境变量设置为永久配置。设置PIPENV_PYPI_MIRROR以及你要使用的镜像即可。

34b30cca44146e868c2c13481827063e.png

查看安全问题

pipenv还提供了check子命令,通过它,我们可以查看当前项目中引用的包是否存在安全问题。如果存在的话,需要及时将依赖升级到修复了安全问题的版本。

$ pipenv checkChecking PEP 508 requirements…Passed!Checking installed package safety…33075: django >=1.10,<1.10.3 resolved (1.10.1 installed)!Django before 1.8.x before 1.8.16, 1.9.x before 1.9.11, and 1.10.x before 1.10.3, when settings.DEBUG is True, allow remote attackers to conduct DNS rebinding attacks by leveraging failure to validate the HTTP Host header against settings.ALLOWED_HOSTS.33076: django >=1.10,<1.10.3 resolved (1.10.1 installed)!Django 1.8.x before 1.8.16, 1.9.x before 1.9.11, and 1.10.x before 1.10.3 use a hardcoded password for a temporary database user created when running tests with an Oracle database, which makes it easier for remote attackers to obtain access to the database server by leveraging failure to manually specify a password in the database settings TEST dictionary.33300: django >=1.10,<1.10.7 resolved (1.10.1 installed)!CVE-2017-7233: Open redirect and possible XSS attack via user-supplied numeric redirect URLs

和pip之间的转换

如果你还在坚持使用pip和requirements.txt,那么其实也可以开始尝试使用pipenv。pipenv也可以非常方便的和requirements.txt之间进行转换。

如果你准备用pipenv安装requirements.txt中定义的依赖包,在安装的时候指定-r参数即可。

pipenv install -r path/to/requirements.txt

如果你要将项目中的pipfile依赖导出为requirements.txt,用下面的命令。

pipenv lock -r

自动加载.env文件

有时候开发项目的时候需要模拟一些环境,因此需要配置一定的环境变量。常见做法就是将要用到的环境变量写入.env文件中。pipenv也可以自动识别这些环境变量,无需任何操作。

环境变量支持

pipenv还支持在配置文件中引入环境变量,如果你准备将项目放到公开的仓库中,但是又不想让别人看到你的秘钥等私有信息,就可以将这些私有信息以环境变量的方式设置,然后在配置文件中引入。

[[source]]url = "https://${PYPI_USERNAME}:${PYPI_PASSWORD}@my_private_repo.example.com/simple"verify_ssl = truename = "pypi"[dev-packages][packages]requests = {version="*", index="home"}maya = {version="*", index="pypi"}records = "*"

pipenv是一个非常好用的工具,填补了pip在依赖管理方面的空白。所以现在很多环境都支持pipenv。如果大家也觉得pipenv好用的话,欢迎评论区一起交流,关注+转发,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值