我正在尝试使用此命令安装 Python 包
pip install <name of package>
我收到权限错误,我不确定为什么。我可以用 sudo
运行它,但有人告诉我这是个坏主意,我应该改用 virtualenv。
什么是虚拟环境?它对我有什么作用?
原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试使用此命令安装 Python 包
pip install <name of package>
我收到权限错误,我不确定为什么。我可以用 sudo
运行它,但有人告诉我这是个坏主意,我应该改用 virtualenv。
什么是虚拟环境?它对我有什么作用?
原文由 Kevin 发布,翻译遵循 CC BY-SA 4.0 许可协议
有时您没有获得 root 权限,您可能最终无法使用 sudo。很多时候,不建议使用 sudo 安装包,因为它可能会覆盖一些其他应用程序可能正在使用的包。
Virtualenv 可以帮助您创建一个不需要 root 权限的独立环境,并且能够根据您的需要定制环境。它由独立的 python 安装组成,仅与您创建的特定环境交互。
所以基本上,它为您提供了一些自由,并避免损坏(或修改)可能托管旧应用程序的许多旧功能的根环境。
安装也很简单。
原文由 ARKhan 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答873 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
使用系统 Python 和库运行会将您限制为一个特定的 Python 版本,由您的操作系统提供商选择。尝试在一个 Python 安装上运行所有 Python 应用程序很可能会在库集合之间发生版本冲突。对系统 Python 的更改也可能会破坏依赖于它的其他操作系统功能。
虚拟环境或“virtualenvs” 是轻量级、独立的 Python 安装,旨在以最少的麻烦进行设置,并且“正常工作”而无需大量配置或专业知识。
virtualenv
无需全局安装 Python 包。当 virtualenv 处于活动状态时,pip
将在环境中安装包,这不会以任何方式影响基本 Python 安装。在 Python 3.3 或更高版本中,您可以按如下方式创建 virtualenv:
对于 Windows,您应该将
python3
替换为 python.exe 的完整路径:(这是典型的 Python 安装;您的系统可能会有所不同。)
在旧版本的 Python 中,包括 Python 2,以下命令之一在大多数情况下应该有效:
ENV_DIR
应该是一个不存在的目录。该目录可以有任何名称,但为了简化这些说明,我假设您已经在名为venv
的目录中创建了 virtualenv(例如python3 -m venv ./venv
)。要在你的 virtualenv 中工作,你激活它:
如果你有 Windows 系统,或者使用这个:
shell 提示中的
(venv)
让你知道你激活了哪个 virtualenv,但如果你不喜欢它,你可以关闭这个功能。你可以运行所有常用的 Python 命令,它们将在你的 virtualenv 本地:python
将运行您安装到 virtualenv 中的 Python 版本,因此(例如)您不必键入python3
来获取 Python 3。它运行的 Python 将可以访问所有标准库模块和您安装到 virtualenv 中的所有包,但(默认情况下)没有安装在系统范围内的包site-packages
目录。最后一条规则很重要:通过限制你的 virtualenv 只使用本地安装的包,你可以确保你准确地控制你的项目正在使用哪些依赖项,即使下周安装或更新了一些新的系统范围的包。如果愿意,您可以获得已安装软件包的列表:
pip
也可以解析这种格式并从中安装,它会安装相同的版本,即使同时发布了更新:您可以通过停用它来退出 virtualenv:
您可以创建任意数量的 virtualenvs,它们不会相互干扰,也不会干扰您的系统包。 virtualenv“只是”一个目录下有一堆二进制文件和脚本,因此您可以像删除任何目录一样删除 virtualenv(Unix 上的
rm -r venv
)。如果 virtualenv 在你删除它时被激活,你可能会混淆你的 shell,所以在这种情况下首先deactivate
可能是个好主意。