加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

”微服务一条龙“最佳指南-工具篇:初步使用Pipenv

发布时间:2018-10-24 20:44:39 所属栏目:教程 来源:Lateautumn_Lin
导读:首先贴上Pipenv的主页 GitHub地址:https://github.com/pypa/pipenv 文档地址:https://docs.pipenv.org 背景介绍 1.什么是Pipenv? 回答:包和版本管理的最好工具,pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包

这里显示 Pipenv 利用 /usr/local/bin/python3 作为 virtualenv 的解释器,然后在 /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin 目录下创建了一个新的 Python3 解释器,同时还创建了两个可执行文件别名 python3.6 和 python,另外我们还可以发现目录下多了一个 Pipfile 文件,这时虚拟环境就创建完成了。

我们切换到 PipenvTest-VSTVh89E/bin 目录查看一下文件结构,可以看到这里面包含了 pip、pip3、pip3.6、python、python3、python3.6 等可执行文件,实际上目录结构和使用 virtualenv 时是完全一样的,只不过文件夹的位置不同而已。

接下来我们可以切换到该虚拟环境下执行命令,执行如下命令即可:

  1. pipenv shell 
  2. 类似于source activate XXX 

执行完毕之后样例输出如下:

  1. Spawning environment shell (/bin/zsh). Use 'exit' to leave.  
  2. source /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/activate  
  3. CQC-MAC% source /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/activate 
  4. (PipenvTest-VSTVh89E) CQC-MAC% 

实际上这也和 virtualenv 激活的流程一样,也是调用了类似 source venv/bin/activate 方法将这个路径加到全局环境变量最前面,这样就会优先调用该路径下的 python、python3、python3.6 可执行文件了。

这时候我们会发现命令行的样子就变了,前面多了一个 (PipenvTest-VSTVh89E) 的标识,代表当前我们已经切换到了虚拟环境下。

这时我们用 which 或 where 命令查看一下 Python 可执行文件的路径,命令如下:

  1. (PipenvTest-VSTVh89E) CQC-MAC% which python3 
  2. /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/python3 
  3. (PipenvTest-VSTVh89E) CQC-MAC% which python3.6 
  4. /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/python3.6 
  5. (PipenvTest-VSTVh89E) CQC-MAC% which python 
  6. /Users/CQC/.local/share/virtualenvs/PipenvTest-VSTVh89E/bin/python 

可以发现当前的 Python 可执行路径都被切换到了 PipenvTest-VSTVh89E/bin 目录下,调用的是虚拟环境中的 Python 解释器,这时我们重新执行刚才的脚本,命令如下:

  1. (PipenvTest-VSTVh89E) CQC-MAC% python3 main.py 

这时我们可以发现报了如下错误:

  1. Traceback (most recent call last): 
  2.   File "main.py", line 1, in <module> 
  3.     import django 
  4. ModuleNotFoundError: No module named 'django' 

这其实是因为新的虚拟环境没有安装任何的 Python 第三方包,实际上如果直接使用 virtualenv 时也是这样的结果。这是因为新的虚拟环境是一个全新的 Python 环境,它默认只包含了 Python 内置的包以及 pip、wheel、setuptools 包,其他的第三方包都没有安装。

这时我们可以使用 Pipenv 来安装 django 包,命令如下:

  1. pipenv install django 

运行结果如下所示

  1. Installing django… 
  2. Collecting django 
  3.   Downloading Django-2.0.2-py3-none-any.whl (7.1MB) 
  4. Collecting pytz (from django) 
  5.   Downloading pytz-2018.3-py2.py3-none-any.whl (509kB) 
  6. Installing collected packages: pytz, django 
  7. Successfully installed django-2.0.2 pytz-2018.3 
  8.  
  9. Adding django to Pipfile's [packages]… 
  10. Locking [dev-packages] dependencies… 
  11. Locking [packages] dependencies… 
  12. Updated Pipfile.lock (e101fb)! 

如果有这样的输出结果就代表成功安装了 Django,可以看到此时安装的 Django版本为 2.0,代表我们的虚拟环境成功安装了 Django2.0 版本。

同时我们还注意到它输出了一句话叫做 Updated Pipfile.lock,这时我们可以发现项目路径下又生成了一个 Pipfile.lock 文件,内容如下:

  1.     "_meta": { 
  2.         "hash": { 
  3.             "sha256": "7b9623243d9c22b1f333ee710aff70d0cbcdf1dd7e0aac69230dc76855d27270" 
  4.         }, 
  5.         "host-environment-markers": { 
  6.             "implementation_name": "cpython", 
  7.             "implementation_version": "3.6.1", 
  8.             "os_name": "posix", 
  9.             "platform_machine": "x86_64", 
  10.             "platform_python_implementation": "CPython", 
  11.             "platform_release": "17.4.0", 
  12.             "platform_system": "Darwin", 
  13.             "platform_version": "Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64", 
  14.             "python_full_version": "3.6.1", 
  15.             "python_version": "3.6", 
  16.             "sys_platform": "darwin" 
  17.         }, 
  18.         "pipfile-spec": 6, 
  19.         "requires": {}, 
  20.         "sources": [ 
  21.             { 
  22.                 "name": "pypi", 
  23.                 "url": "https://pypi.python.org/simple", 
  24.                 "verify_ssl": true 
  25.             } 
  26.         ] 
  27.     }, 
  28.     "default": { 
  29.         "django": { 
  30.             "hashes": [ 
  31.                 "sha256:af18618ce3291be5092893d8522fe3919661bf3a1fb60e3858ae74865a4f07c2", 
  32.                 "sha256:9614851d4a7ff8cbd32b73c6076441f377c45a5bbff7e771798fb02c43c31f47" 
  33.             ], 
  34.             "version": "==2.0.2" 
  35.         }, 
  36.         "pytz": { 
  37.             "hashes": [ 
  38.                 "sha256:ed6509d9af298b7995d69a440e2822288f2eca1681b8cce37673dbb10091e5fe", 
  39.                 "sha256:f93ddcdd6342f94cea379c73cddb5724e0d6d0a1c91c9bdef364dc0368ba4fda", 
  40.                 "sha256:61242a9abc626379574a166dc0e96a66cd7c3b27fc10868003fa210be4bff1c9", 
  41.                 "sha256:ba18e6a243b3625513d85239b3e49055a2f0318466e0b8a92b8fb8ca7ccdf55f", 
  42.                 "sha256:07edfc3d4d2705a20a6e99d97f0c4b61c800b8232dc1c04d87e8554f130148dd", 
  43.                 "sha256:3a47ff71597f821cd84a162e71593004286e5be07a340fd462f0d33a760782b5", 
  44.                 "sha256:5bd55c744e6feaa4d599a6cbd8228b4f8f9ba96de2c38d56f08e534b3c9edf0d", 
  45.                 "sha256:887ab5e5b32e4d0c86efddd3d055c1f363cbaa583beb8da5e22d2fa2f64d51ef", 
  46.                 "sha256:410bcd1d6409026fbaa65d9ed33bf6dd8b1e94a499e32168acfc7b332e4095c0" 
  47.             ], 
  48.             "version": "==2018.3" 
  49.         } 
  50.     }, 
  51.     "develop": {} 

可以看到里面标识了 Python 环境基本信息,以及依赖包的版本及 hashes 值。

另外我们还可以注意到 Pipfile 文件内容也有更新,[packages] 部分多了一句 django = “*”,标识了本项目依赖于 Django,这个其实类似于 requirements.txt 文件。

那么到这里有小伙伴可能就会问了, Pipfile 和 Pipfile.lock 有什么用呢?

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读