Pipenv 和虚拟环境 — pipenv 文档
Pipenv 和虚拟环境
https://farm3.staticflickr.com/2943/33485660921_dfc0494739_k_d.jpg 本教程将引导您安装和使用 Python 包。
它将向您展示如何安装和使用必要的工具,并就最佳实践提出强有力的建议。 请记住,Python 用于许多不同的目的,并且您想要管理依赖项的确切方式可能会根据您决定发布软件的方式而改变。 此处提供的指南最直接适用于网络服务(包括 Web 应用程序)的开发和部署,但也非常适合管理任何类型项目的开发和测试环境。
笔记
本指南是为 Python 3 编写的,但是,这些说明在 Python 2.7 上应该可以正常工作——如果您出于某种原因仍在使用它。
☤ 确保你有 Python 和 pip
在继续之前,请确保您拥有 Python 并且可以从命令行使用它。 您可以通过简单地运行来检查:
$ python --version
你应该得到一些像 3.6.2
这样的输出。 如果您没有 Python,请从 python.org 安装最新的 3.x 版本或参考 The Hitchhiker's Guide to Python 的 Installing Python 部分.
笔记
如果你是新手,你会收到这样的错误:
>>> python
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'python' is not defined
这是因为此命令旨在在 shell(也称为 terminal 或 console)中运行。 请参阅 Python for Beginners 入门教程 ,了解有关使用操作系统 shell 和与 Python 交互的介绍。
此外,您需要确保您有可用的 pip。 您可以通过运行来检查:
$ pip --version
pip 9.0.1
如果您从源代码安装 Python,使用来自 python.org 的安装程序,通过 Homebrew 或通过 Linuxbrew,您应该已经有了 pip。 如果您使用的是 Linux 并使用 OS 包管理器进行安装,则可能需要单独 安装 pip。
如果您打算使用 Homebrew 或 Linuxbrew 安装 Pipenv,则可以跳过此步骤。 Homebrew/Linuxbrew 安装程序会为您处理 pip。
☤ 安装 Pipenv
Pipenv 是 Python 项目的依赖管理器。 如果您熟悉 Node.js 的 npm 或 Ruby 的 bundler,它在精神上与这些工具相似。 虽然 pip 可以安装 Python 包,但建议使用 Pipenv,因为它是一种高级工具,可简化常见用例的依赖项管理。
☤ 使用Pipx隔离安装Pipenv
`Pipx`_ 是一个帮助您安装和运行用 Python 编写的最终用户应用程序的工具。 它自行将应用程序安装到隔离且干净的环境中。 要安装 pipx,只需运行:
$ pip install --user pipx
在系统上准备好 pipx
后,继续安装 Pipenv:
$ pipx install pipenv
☤ Pipenv的实用安装
如果您有 pip 的工作安装,并且在您的用户环境中将某些“工具链”类型的 Python 模块作为全局实用程序维护,则 pip user installs 允许安装到您的主目录中。 请注意,由于依赖项之间的交互,您应该将以此方式安装的工具限制为 Python 工作流的基本构建块,如 virtualenv、pipenv、tox 和类似软件。
安装:
$ pip install --user pipenv
笔记
这会执行 用户安装 以防止破坏任何系统范围的软件包。 如果安装后 pipenv
在您的 shell 中不可用,您需要将 用户群 的二进制目录添加到您的 PATH
。
在 Linux 和 macOS 上,您可以通过运行 python -m site --user-base
并在末尾添加 bin
来找到用户库二进制目录。 例如,这通常会打印 ~/.local
(将 ~
扩展到主目录的绝对路径),因此您需要将 ~/.local/bin
添加到 [ X163X]。 你可以通过修改~/.profile来永久设置你的PATH
。
在 Windows 上,您可以通过运行 python -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:
$ pip install --user --upgrade pipenv
☤ Pipenv的粗安装
如果你甚至没有安装 pip,你可以使用这种粗略的安装方法,它会引导你的整个系统:
$ curl https://raw.githubusercontent.com/pypa/pipenv/master/get-pipenv.py | python
☤ 自制安装 Pipenv(不鼓励)
Homebrew 是一个流行的 macOS 开源包管理系统。 对于 Linux 用户,Linuxbrew 是那个的 Linux 端口。
通过 Homebrew 或 Linuxbrew 安装 pipenv 会将 pipenv 及其所有依赖项保留在隔离的虚拟环境中,因此它不会干扰 Python 安装的其余部分。
安装 Homebrew 或 Linuxbrew 后,只需运行:
$ brew install pipenv
随时升级 pipenv:
$ brew upgrade pipenv
笔记
不鼓励安装 Homebrew,因为每次升级 Pipenv 所依赖的 Homebrew Python 时,用户都必须重新安装 Pipenv,可能还需要重新安装所有由它管理的虚拟环境。
☤ 为你的项目安装包
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('Your IP is {0}'.format(response.json()['origin']))
然后你可以使用 pipenv run
运行这个脚本:
$ pipenv run python main.py
你应该得到类似这样的输出:
Your IP is 8.8.8.8
使用 $ pipenv run
确保您安装的软件包可用于您的脚本。 还可以生成一个新的 shell,以确保所有命令都可以使用 $ pipenv shell
访问已安装的软件包。
☤ Virtualenv 映射警告
- Pipenv 自动将项目映射到其特定的 virtualenv。
- virtualenv 以项目根目录的名称加上项目根目录的完整路径的哈希值(例如,
my_project-a3de50
)全局存储。 - 如果您更改项目的路径,则会破坏这样的默认映射,并且 pipenv 将不再能够找到和使用项目的 virtualenv。
- 您可能希望在 .bashrc/.zshrc(或任何 shell 配置文件)中设置
export PIPENV_VENV_IN_PROJECT=1
以在项目目录中创建 virtualenv,避免后续路径更改出现问题。
☤ 下一步
恭喜,您现在已经知道如何安装和使用 Python 包了! ✨ 🍰 ✨