pipenv的安装和使用
pipenv的安装和使用
参考:
介绍
Python的虚拟环境管理工具:最常用的便是virtualenv,virtualenvwrapper,pipenv这几种虚拟环境的管理都是基于virtualenv,只是做了不同的封装,达到了更好的效果。
- virtualenv ,此工具会在项目目录下创建一个文件夹,名字叫做virtualenv_name,此目录下会包含python拷贝,之后所有的依赖都会保存至此目录中,在虚拟环境**状态下,可以安装所需的依赖包,安装的依赖包会保存至项目虚拟环境目录virtualenv_name 下,不会污染系统全局环境;
- 缺点:
- 可能需要手动安装/删除某些特定版本的包
- 要定期更新
requirements.txt
,保持项目环境的一致性- 会保留两个版本
requirements.txt
,一个用于开发,一个用于生产环境,导致更多复杂性- virtualenvwrapper ,virtualenvwrapper是对virtualenv接口的封装。virtualenvwrapper会将虚拟环境的目录统一保存,不需手动管理,使用起来更加便利;
- pipenv ,pipenv是Kenneth Reitz在2017年1月发布的Python依赖管理工具,现在由PyPA维护。你可以把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来替代旧的依赖记录方式(requirements.txt),pipenv 在易用性上要简单很多,同时增加了 lock 文件,能更好的锁定版本。如果没有特殊要求可以 pipenv 直接使用 lock 的版本,开发又可以小步迭代,实现依赖的稳步升级。
- 实现同时管理项目中的python虚拟环境和相关包依赖
pipenv的优势
- pipenv会在项目目录下创建
Pipfile
、Pipfile.lock
文件,管理包之间的依赖关系,以前我们需要将虚拟环境依赖包的导出为requirements.txt, 一旦依赖包变动,就要重新导出,现在Pipfile和Pipfile.lock文件可以节省这些步骤,更方便地管理;- 安装卸载包无需**虚拟环境,直接在项目文件夹下操作;
- 卸载时,自动检查依赖库是否被其他包依赖,来选择是否彻底删除。
- 无需**虚拟环境执行代码,只要有pipfile文件通过
pipenv run python xx.py
。- 便于docker容器化管理,Pipfile文件支持生成requirements文件,便于项目代码docker化管理,另外,pipfile还支持–dev环境,可以在调试阶段安装许多调试工具等,而不影响生产环境的环境。
- 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
- 通过加载
.env
文件简化开发工作流程
安装
Anaconda Prompt 或者 cmd 输入 ->
pip install pipenv
检测安装是否成功:
pipenv --version
预览一下pipenv的用法
pipenv --help
创建环境
-
创建环境
pipenv install
&pipenv shell
【直接在地址行输入cmd 或者 pipenv shell】使用
pipenv install
&pipenv shell
区别pipenv install
需要在DOS界面下操作,在命令提示符前面显示虚拟环境名字后,才算进入环境pip shell
可以在地址行直接输入,**anaconda的pipenv工具,一步到位进入虚拟环境,没有anaconda时可能不能用(WeiBoImageCrawling-rDB0ue93) F:\Ccode\WeiBoImageCrawling>pipenv install Creating a virtualenv for this project… Pipfile: F:\Ccode\WeiBoImageCrawling\Pipfile Using C:/Users/流年/AppData/Local/Programs/Python/Python37-32/python.exe (3.7.4) to create virtualenv… [ ] Creating virtual environment...created virtual environment CPython3.7.4.final.0-32 in 2272ms creator CPython3Windows(dest=C:\Users\流年\.virtualenvs\WeiBoImageCrawling-rDB0ue93, clear=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=C:\Users\流年\A ppData\Local\pypa\virtualenv) added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.36.2 activators BashActivator,BatchActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator Successfully created virtual environment! Virtualenv location: C:\Users\流年\.virtualenvs\WeiBoImageCrawling-rDB0ue93 Installing dependencies from Pipfile.lock (a65489)… ================================ 0/0 - 00:00:00
-
上述命令会生成
Pipfile
和Pipfile.lock
,自动生成一个随机的虚拟环境目录名[项目名称+随机字符]。-
Pipfile:用于保存项目的python版本、依赖包等相关信息
Pipfile文件可以单独移放到其他项目内,用于项目虚拟环境的建立和依赖包的安装
-
Pipfile.lock:用于对Pipfile的锁定
-
-
pipenv install
Pipfile 文件
-
目录中存在,根据这个Pipfile生成虚拟环境。
-
目录中不存在,该命令将创建一个 Pipfile 文件。
若项目目录中虚拟环境已创建且有Pipfile文件,将根据Pipfile文件来安装依赖包
-
-
windows下执行命令,生成的虚拟环境在C:\Users\用户名.virtualenvs文件夹下
-
一般虚拟环境目录名:创建环境时所在的项目目录名 + 随机字符串,eg:myblog-Gtn4e1q9
解析pipfile文件
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] [requires] python_version = "3.7" [scripts] test = "python3 -m unittest discover -s ./tests" dev = "python3 manage.py runserver 0.0.0.0:8000"
-
source
用来设置仓库地址,即从哪下载虚拟环境所需要的包- 可手动修改
url
为,为自己想用的源
- 可手动修改
-
packages
用来指定项目依赖的包,可以用于生产环境和生成requirements文件 -
dev-packages
用来指定开发环境需要的包,这类包只用于开发过程,不用与生产环境,比如单元测试相关的包,只在开发阶段有用,这样分开便于管理。安装调试工具、性能测试工具、python语法工具 -
requires
中指定目标Python版本 -
[scripts]
添加自定义的脚本命令,并通过 pipenv run 的方式在虚拟环境中执行对应的命令:pipenv run test
相当于执行pipenv run python3 -m unittest discover -s ./tests
pipenv run dev
相当于pipenv run python3 manage.py runserver 0.0.0.0:8000
解析pipfile.look文件
-
Pipfile.lock
中记录了当前虚拟环境中安装的依赖的版本号以及哈希,以保证每次根据这些值装出来的依赖都是一致的,该文件用来保证包的完整性。记住,任何情况下不要手动修改该文件! -
项目提交时,可将
Pipfile
文件和Pipfile.lock
文件一并提交,给其他开发人员克隆下载,他们可以根据此Pipfile文件运行命令pipenv install
生成自己的虚拟环境。
指定虚拟环境 Python版本
pipenv --python 3.6 #指定使用Python3.6的虚拟环境 pipenv --two #使用系统的Python2在创建虚拟环境 pipenv --three #使用系统的Python3在创建虚拟环境 #注意:以上三个参数只能单独使用。它们还具有破坏性,会删除当前的虚拟环境,然后用适当版本的虚拟环境替代。
- 当给定了一个Python版本的时候,Pipenv会自动扫描系统中能够匹配给定的Python版本的Python解释器,没指定版本时,使用系统默认的Python版本。
虚拟环境中运行代码
-
**环境
pipenv shell
-
创建环境后会自动进入到虚拟环境中,当退出虚拟环境重新进入到虚拟环境则需要执行以上命令
-
执行完命令,命令提示符前出现了如**(TestPipenv-tmf99lpc)**的虚拟环境的名字,代表进入了虚拟环境
-
虚拟环境中的,python版本、pip、第三方库,都不会与系统中的库冲突
-
-
在虚拟环境中运行代码项目
python xxx.py
eg:(WeiBoImageCrawling-rDB0ue93) F:\Ccode\WeiBoImageCrawling>python xxx.py xxx.py 运行...
-
不进入虚拟环境的情况下使用虚拟环境运行代码,可以使用
pipenv run python xxx.py
命令,eg:F:\Ccode\WeiBoImageCrawling>pipenv run python xxx.py xxx.py 运行...
-
pipenv 管理Python包
-
安装依赖包到虚拟环境
pipenv install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
pipenv install parsel==1.3.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
- 安装nose2包并将其关联为只在开发环境中需要的包
pipenv install --dev nose2 -i https://pypi.tuna.tsinghua.edu.cn/simple/
--dev
标志,此标志的包只用于开发环境,安装包记录在Pipfile
中的dev-package
中克隆
Profile
文件后使用命令pipenv install
创建虚拟环境,默认不会安装dev-package
下的安装包,除非使用命令pipenv install --dev
Pipefile
和Pipefile.lock
都会按照你的操作进行自动更新,如果需要手动修改包的依赖条件,手工编辑 Pipefile 并进行安装即可。注意:强烈建议使用双引号包裹包名和版本号以避免unix操作系统中的输入和输出重定向问题 pipenv install requests # 不指定版本 pipenv install requests==2.31 # 指定版本 pipenv install --dev requests # 在dev开发环境安装测试包(可以加–skip-lock参数) pipenv install “requests>=1.4” # 只安装等于或者大于 1.4.0 的版本 pipenv install “requests<=2.13” # 只安装小于或者等于 2.13.0 的版本 pipenv install “requests>2.19” # 安装 2.19.1 版本但是不安装 2.19.0 版本 pipenv install “requests!=2.19” # 避免安装某个版本 pipenv --site-packages # 加载系统已安装 Python 包 pipenv install package_name --skip-lock # 跳过lock,等项目开发好后,再更新所有报的hash值 pipenv install -r path/to/requirements.txt #导入某个requirements文件 pipenv install “requests~=2.2” # 锁定包的主版本(这相当于使用2.*) 请优先使用 ~= 标识符而不是 == 标识符,因为后者会阻止 pipenv 更新包 安装完成后,会在Pipfile文件中看到
-
卸载包
pipenv uninstall beautifulsoup4 #在项目所在虚拟环境中卸载beautifulsoup4 pipenv uninstall --all #从虚拟环境中移除所有已安装的包,但Pipfile.lock文件不受影响 pipenv uninstall --all--dev #从虚拟环境中卸载所有开发包,并从Pipfile文件中移除这些包
-
更新命令
pipenv update requests #在项目中更新requests包 pipenv update #更新项目中所有的包 pipenv update --outdated #查看现有包哪些已经过期
-
查看命令
pipenv --where #查看项目位置 pipenv --venv #查看虚拟环境位置 pipenv --py #查看解释器信息 pipenv graph #显示现有的依赖包/包的依赖结构/已安装的模块 pipenv list #查看已安装的包 pipenv lock #更新Pipfile.lock文件锁定当前环境的依赖版本 exit #退出虚拟环境
-
删除虚拟环境
pipenv --rm
- 实践发现:同一项目目录,多次增删虚拟环境,虚拟环境的名字不变,或者说内存空间不变
-
其他命令
pipenv -h
Options: --where Output project home information. --venv Output virtualenv information. --py Output Python interpreter information. --envs Output Environment Variable options. --rm Remove the virtualenv. --bare Minimal output.最小输出? --completion Output completion (to be executed by the shell). --man Display manpage. 显示手册页。 --support Output diagnostic information for use in GitHub issues.使用GitHub时,输出诊断信息 --site-packages / --no-site-packages Enable site-packages for the virtualenv. [env var: PIPENV_SITE_PACKAGES] --python TEXT Specify which version of Python virtualenv should use. --three / --two Use Python 3/2 when creating virtualenv. --clear Clears caches (pipenv, pip, and pip-tools). [env var: PIPENV_CLEAR] 清除缓存 -v, --verbose Verbose mode. 详细模式 --pypi-mirror TEXT Specify a PyPI mirror. 指定PyPI镜像 --version Show the version and exit. -h, --help Show this message and exit. Usage Examples: Create a new project using Python 3.7, specifically: $ pipenv --python 3.7 Remove project virtualenv (inferred from current directory): $ pipenv --rm Install all dependencies for a project (including dev): $ pipenv install --dev Create a lockfile containing pre-releases:创建包含预发行版本的锁定文件: $ pipenv lock --pre Show a graph of your installed dependencies: $ pipenv graph Check your installed dependencies for security vulnerabilities:检查已安装的依赖项是否存在安全漏洞: $ pipenv check Install a local setup.py into your virtual environment/Pipfile:将本地setup.py安装到虚拟环境 $ pipenv install -e . Use a lower-level pip command:使用较低级别的pip命令 $ pipenv run pip freeze Commands: check Checks for PyUp Safety security vulnerabilities and against PEP 508 markers provided in Pipfile. clean Uninstalls all packages not specified in Pipfile.lock. graph Displays currently-installed dependency graph information. install Installs provided packages and adds them to Pipfile, or (if no packages are given), installs all packages from Pipfile. lock Generates Pipfile.lock. open View a given module in your editor. run Spawns a command installed into the virtualenv. shell Spawns a shell within the virtualenv. sync Installs all packages specified in Pipfile.lock. uninstall Uninstalls a provided package and removes it from Pipfile. update Runs lock, then sync.
$ pipenv Usage: pipenv [OPTIONS] COMMAND [ARGS]... 命令具有以下选项 Options:pipenv --update 更新Pipenv & pip --where 显示项目文件所在路径 --venv 显示虚拟环境实际文件所在路径 --py 显示虚拟环境Python解释器所在路径 --envs 显示虚拟环境的选项变量 --rm 删除虚拟环境 --bare 最小化输出 --completion 完整输出 --man 显示帮助页面 --three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本) --python TEXT 指定某个Python版本作为虚拟环境的安装源 --site-packages 附带安装原Python解释器中的第三方库 --jumbotron 不知道啥玩意.... --version 版本信息 -h, --help 帮助信息 可使用的命令参数: Commands: check 检查安全漏洞 graph 显示当前依赖关系图信息 install 安装虚拟环境或者第三方库 lock 锁定并生成Pipfile.lock文件 open 在编辑器中查看一个库 run 在虚拟环境中运行命令 shell 进入虚拟环境 uninstall 卸载一个库 update 卸载当前所有的包,并安装它们的最新版本
pyinstaller打包生成 .exe
-
安装 pyinstaller
pipenv install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/
-
打包命令
pyinstaller -F <入口.py>
-F 打包成可执行文件 -w (小写) 不显示命令行窗口
eg:
pyinstaller -F E:/tf/lab.8.1-huffman-coding/byteSourceCoder.py
兼容virtualenv
-
pipenv可以像virtualenv一样使用命令生成requirements.txt文件
pipenv lock -r --dev > requirements.txt
-
同样的,也可以像virtualenv一样通过requirements.txt文件安装包
pipenv install -r requirements.txt
这个命令让我们可以重用以前requirements.txt文件来构建我们新的开发环境,把我们的项目顺利的迁到pipenv。
pipenv install语法与pip install完全兼容
pip的基本使用
pip install <包名> #安装,自动下载到Python的Lib>site-packages目录
pip uninstall <包名> #卸载
pip freeze #查看已安装的包及其版本
pip list -o #查看可升级的包
pip install -U <包名> #升级指定包
python -m pip install --upgrade pip #升级pip
推荐阅读
-
CSS3阴影 box-shadow的使用和技巧总结_html/css_WEB-ITnose
-
Onethink1.1 钩子和插件的使用!
-
Python的网络编程库Gevent的安装及使用技巧
-
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
-
Ubuntu 下 nginx , php , mysql 和 golang 的简单安装
-
Android 入门第十讲02-广播(广播概述,使用方法(系统广播,自定义广播,两个activity之间的交互和传值),EventBus使用方法,数据传递,线程切换,Android的系统广播大全)
-
如何使用PHP和MySQL创建个性的网站分页
-
Python的安装与使用
-
PHP队列服务HTTPSQS的安装和使用实例
-
indexOf 和 lastIndexOf 的使用方法