文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

pipenv 使用简介

2023-01-31 08:19

关注

之前在开发时一直使用 conda 使用作为虚拟环境管理工具,但有时候会经常会临时性的需要一个虚拟环境,
如果使用 conda create 创建一个新环境,耗时不说,有时候还忘了删除,最后系统里一堆的虚拟环境。
偶然发现 pipenv 后试用了一下,感觉它的工作流相比之前虚拟环境环境加 requirements.txt
的方式更加简单方便。

安装

pipenv 最好和 Python3 一起使用

最简单的方式是通过 pip 安装

pip3 install pipenv

如果是 mac 用户也可以通过 Homebrew 安装

brew install pipenv

如果没有安装 pip 可以通过以下方式安装

https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python

使用

创建新项目

mkdir myproject
pipenv install

这会在 myproject 文件下创建 PipfilePipfile.lock 文件,同时创建虚拟环境
虚拟环境名称为 pipenv 加项目路径哈希值,如 pipenv-7BgKv-oX

ll
-rw-r--r-- 1 rookie rookie 138 4月  20 20:24 Pipfile
-rw-r--r-- 1 rookie rookie 453 4月  20 20:24 Pipfile.lock

虚拟机环境默认位于 ~/.local/share/virtualenvs/,由于 pipenv 通过路径名哈希值与虚拟环境
建立映射关系,因此如果移动项目会导致虚拟环境不可用。可以通过在 .bashrc 添加
export PIPENV_VENV_IN_PROJECT=1 让 pipenv 在项目文件中创建虚拟环境,这时候虚拟环境位于 myproject/.venv 文件夹下。

如果项删除虚拟环境,在项目顶层目录下运行

pipenv --rm

如果要指定 Python 版本,可以通过 --python 完成,如我要安装 python3.7 的虚拟环境

pipenv --python 3.7

配置文件

# cat Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

[[source]] 模块指定了 pip 源位置,通常国内 pip 源加快下载速度

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

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"

安装和卸载 packages

你可以编辑 packages, 添加项目需要的 Python 库,如 requests='**',甚至可以指定不同
平台下的包配置,详细配置参考 Advanced Usage of Pipenv
不过你可以通过pipenv install requests
来安装,pipenv 将会自动更新 PipfilePipfile.lock
[dev-packages] 则是一些开发依赖但不是项目依赖包的存放目录,如 pylint 等 pep8 检查工具
可以在安装时指定 pipenv install --dev将某个包声明为 dev-package
卸载 package 也很简单

pip uninstall

如果通过 pipenv 命令安装和卸载 package,安装或卸载完成后还会更新 Pipfile.lock 文件,有时候会卡在这个步骤。通常可以 ctrl+c 强制推出,删除 Pipfile.lock, 然后

pipenv lock

重新生成该文件

进入和退出虚拟环境

进入虚拟环境

cd myproject

pipenv shell

退出虚拟环境

pipenv exit

高级用法

有时候某些 package 需要指定特定的 pip 源,可以通过如下方式指定,非常简便

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "http://pypi.home.kennethreitz.org/simple"
verify_ssl = false
name = "home"

[dev-packages]

[packages]
requests = {version="*", index="home"}
maya = {version="*", index="pypi"}
records = "*"

有时候需要生成 requirements.txt 文件

pipenv lock -r

如果只需要生成 dev-pakcages 列表,也很简单

pipenv lock -r --dev

自动载入环境变量文件。如果 .env 文件在项目根目录下,pipenv shellpipenv run
会自动载入文件中的环境变量。

$ cat .env
HELLO=WORLD

$ pipenv run python
Loading .env environment variables…
Python 2.7.13 (default, Jul 18 2017, 09:17:00)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['HELLO']
'WORLD'

pipenv 还支持自定义命令,这对于某些开发过程中经常使用的命令来说非常方便。
Pipfile 中添加 [scripts]

[scripts]
printspam = "python -c \"print('I am a silly example, no one would need to do this')\""

通过 pipenv run <custom_command> 即可运行自定义命令,如

pipenv run echospam "indeed"
I am really a very silly example indeed

更多高级用户可以参考 官方文档


最后欢迎关注我的 Blog-PrivateRookie

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯