Pipenv 和 Python 虚拟环境

优质
小牛编辑
139浏览
2023-12-01

这份教程是帮助你安装和使用 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 以确保所有的命令都可以访问你已安装的软件包。