| 
                        副标题[/!--empirenews.page--]
                           
首先贴上Pipenv的主页 
GitHub地址:https://github.com/pypa/pipenv 
文档地址:https://docs.pipenv.org 
背景介绍 
1.什么是Pipenv? 
回答:包和版本管理的最好工具,pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz  写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv。Pipfile和pipenv本来都是Kenneth  Reitz的个人项目,后来贡献给了pypa组织。Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。 
2.Python有哪些包和版本管理工具? 
回答:pip、virtualenv、pyenv 
3.这些工具和Pipenv的区别以及它类似与其他语言中的哪些工具? 
回答: 
(1)pip只是一个Python包管理的工具,也就是说它不能同时去管理项目的版本,举例来说, 
场景一: 
项目A和项目B,同时使用一个包,但是项目A需要使用包的1.0版本,项目B需要使用包的2.0版本 
场景二: 
项目A在开发阶段需要使用到单元测试模块,所以用到一些做测试的包,但是项目上线不需要这些包。 
这种场景需求就要求我们需要为不同的版本以及开发阶段提供不同虚拟环境。 
(2)virtualenv 
virtualenv  是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。它的原理其实很简单,就是在创建完新的虚拟环境之后,在激活环境的同时,在环境变量里面加上了指定虚拟环境的Python路径而已 
讲到这里,我们有个疑惑,既然virtualenv这么好用了,为什么官方更推荐使用Pipenv呢,因为它在virtualenv之上又封装了一层,这就好像requests在urllib等网络库之后又封装了一层,更加人性化,以及更加丰富的、简洁的语法自然是更受欢迎,而且更加独特的是其在对于依赖的处理更加细节化,当下载一个新的包时,会自动对包加锁处理,检查其依赖包的包装情况。 
那么,在其他语言中是否有类似的项目呢,其实是有的。Pipenv也是借鉴于Node的NPM,Ruby的GEM等等,大家感兴趣可以去看看他们的原理,我们会在之后的文章中来摸索一下他们的设计原理。 
2.具体使用 
安装 
Pipenv 是基于 Python 开发的包,所以可以直接用 pip 来安装,命令如下: 
- pip3 install pipenv 
 
  
另外还有多种安装方式,如  Pipsi、Nix、Homebrew,安装方式可以参考:http://pipenv.readthedocs.io/en/latest/#install-pipenv-today 
基本使用 
首先我们可以新建一个项目,例如叫做 PipenvTest,然后新建一个 Python 脚本,例如叫 main.py,内容为: 
- import django 
 - print(django.get_version()) 
 
  
直接用系统的 Python3 运行此脚本: 
- python3 main.py 
 
  
结果如下: 
- 1.11 
 
  
我们可以看到系统安装的 Django 版本是 1.11。但是我们想要本项目基于 Django 2.x 开发,当然我们可以选择将系统的 Django  版本升级,但这样又可能会影响其他的项目的运行,所以这并不是一个好的选择。为了不影响系统环境的 Django 版本,所以我们可以用 Pipenv  来创建一个虚拟环境。 
在该目录下,输入 pipenv 命令即可查看命令的完整用法: 
- Usage: pipenv [OPTIONS] COMMAND [ARGS]... 
 -   
 - Options: 
 -   --update         Update Pipenv & pip to latest. 
 -   --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 eval'd). 
 -   --man            Display manpage. 
 -   --three / --two  Use Python 3/2 when creating virtualenv. 
 -   --python TEXT    Specify which version of Python virtualenv should use. 
 -   --site-packages  Enable site-packages for the virtualenv. 
 -   --jumbotron      An easter egg, effectively. 
 -   --version        Show the version and exit. 
 -   -h, --help       Show this message and exit. 
 -   
 -   
 - Usage Examples: 
 -    Create a new project using Python 3.6, specifically: 
 -    $ pipenv --python 3.6 
 -   
 -    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: 
 -    $ pipenv install -e . 
 -   
 - Commands: 
 -   check      Checks for security vulnerabilities and against PEP 508 markers 
 -              provided in Pipfile. 
 -   graph      Displays currently–installed dependency graph information. 
 -   install    Installs provided packages and adds them to Pipfile, or (if none 
 -              is given), installs all packages. 
 -   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. 
 -   uninstall  Un-installs a provided package and removes it from Pipfile. 
 -   update     Uninstalls all packages, and re-installs package(s) in [packages] 
 -              to latest compatible versions. 
 
  
接下来我们首先验证一下当前的项目是没有创建虚拟环境的,调用如下命令: 
- pipenv --venv 
 
  
结果如下: 
- No virtualenv has been created for this project yet! 
 
  
                        (编辑:52站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |