Pipenv 和 Python 虚拟环境
这份教程是帮助你安装和使用 Python 的包
本指南会告诉你如何安装和使用必要的工具。值得注意的是 Python 可以做许多许多的事情,至于你如何去安装和管理你的依赖可能会根据你项目的不同而不同。这份指南更多是开发和部署网络服务(包括 web 应用),但是这份指南同样适用于帮助你管理任何项目的开发和测试环境。
注意:这份指南是在 Python 3 版本下完成的,如果你由于不可抗拒的原因仍然在使用 Python 2.7 这份指南内的内容也应该会适用。
确保你已经安装了 Python 和 pip
在你进行任何更多的操作之前,确保你已经安装了 Python 并且它可以让你在命令行中使用。你可以输入以下命令来检测:
$ python --version
你应该获得类似于 3.6.2
的输出。如果你没有安装 Python,请在 python.org 安装最新的 3.x 版本或者参考本指南的 安装 Python 一节。
注意:如果你是新手,并且出现这样的错误:
>>> python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined
这是因为此命令旨在运行于 shell
(也称为 终端
或 控制台
)。
请参阅 Python入门教程,了解如何使用操作系统的 shell 以及如何与 Python 进行交互。
此外,您需要确保您有可用的 pip
。 你可以通过运行来检查:
$ pip --version
如果您是从源代码安装 Python,使用 python.org 的安装程序或通过 Homebrew 安装,则应该已经有 pip 。 如果您在 Linux 上并使用 OS 软件包管理器进行安装,则可能需要单独 安装 pip。
安装 Pipenv
Pipenv 是一个 Python 项目依赖管理工具,如果你熟悉 Node.js 的 npm 或者 Ruby 的 bundler ,他们是和 Pipenv 非常相似的工具。尽管 pip 也可以安装 Python 的包,但是 Pipenv 被推荐的理由是因为 Pipenv 为使用者提供了更加方便的依赖管理
使用 pip
安装 Pipenv :
$ pip install --user pipenv
注意:以上命令执行了 用户安装 模式,以防止破坏其他的包。你通过 Pip 安装以后,如果 pipenv
命令并没有生效的话,你需要添加 基本目录 的路径到你的 PATH
中.
在 Linux 和 macOS 上,你可以通过运行 python -msite --user-base
命令然后在其结果后面加上 bin
来找到用户基础二进制文件。 举个例子,上面的命令会输出 ~/.local
( ~
代表当前登录用户 home
目录的绝对路径),然后你需要把 ~/.local/bin
添加到 PATH
中去,通过 修改 ~/.profile 你可以让你的 PATH
永久生效。
在 Windows 上找用户基础二进制文件,你可以运行命令 py -m site --user-site
然后替换 site-packages
为 Scripts
。比如,前面的命令返回结果是 C:\Users\Username\AppData\Roaming\Python36\site-packages
,那么你需要在 PATH
中包含 C:\Users\Username\AppData\Roaming\Python36\Scripts
。你可以在 控制面板 中设置 PATH
使其永久生效。当 PATH
改变后,你可能需要重启系统来使其生效。
为你的项目安装软件包
Pipenv 管理每个项目的依赖。要安装软件包,先切换到你的项目目录(或者像本教程一样是个空目录)然后运行:
$ cd myproject
$ pipenv install requests
Pipenv 将会安装优秀的 Requests 库并在你的项目目录中创建一个 Pipfile
文件。 这个 Pipfile 用来跟踪你项目所需的依赖,以防以后你需要重新安装它们,比如把你的项目分享给别人。你应该获得类似下面这种输出(尽管确切的目录可能是不同的):
Creating a Pipfile for this project...
Creating a virtualenv for this project...
Using base prefix '/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6'
New python executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python3.6
Also creating executable in ~/.local/share/virtualenvs/tmp-agwWamBd/bin/python
Installing setuptools, pip, wheel...done.
Virtualenv location: ~/.local/share/virtualenvs/tmp-agwWamBd
Installing requests...
Collecting requests
Using cached requests-2.18.4-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests)
Using cached idna-2.6-py2.py3-none-any.whl
Collecting urllib3<1.23,>=1.21.1 (from requests)
Using cached urllib3-1.22-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Using cached chardet-3.0.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests)
Using cached certifi-2017.7.27.1-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, chardet, certifi, requests
Successfully installed certifi-2017.7.27.1 chardet-3.0.4 idna-2.6 requests-2.18.4 urllib3-1.22
Adding requests to Pipfile's [packages]...
P.S. You have excellent taste! ✨ ? ✨
使用已安装的软件包
现在 Requests 已经安装,你可以创建一个简单的 main.py
文件来使用它:
import requests
response = requests.get('https://httpbin.org/ip')
print('你的 IP 地址是 {0}'.format(response.json()['origin']))
然后你可以使用 pipenv run
来运行这个脚本:
$ pipenv run python main.py
你可以获得类似这样的输出:
你的 IP 地址是 8.8.8.8
使用 $ pipenv run
来确保你安装的软件包在你的脚本中可用。也可以使用 $ pipenv shell
来生成一个新的 shell 以确保所有的命令都可以访问你已安装的软件包。