Kev*_*vin 36 python pip virtualenv
我正在尝试使用此命令安装Python包
pip install <name of package>
Run Code Online (Sandbox Code Playgroud)
我收到了许可错误,我不知道为什么.我可以运行它sudo,但有人告诉我这是一个坏主意,我应该使用virtualenv代替.
什么是virtualenv?它对我有什么用?
Kev*_*vin 43
使用系统运行Python和库将您限制为由OS提供商选择的一个特定Python版本.尝试在一个Python安装上运行所有Python应用程序可能会导致库集合之间发生版本冲突.系统Python的更改也可能会破坏依赖于它的其他操作系统功能.
虚拟环境或"virtualenvs"是轻量级,独立的Python安装,旨在简化设置,"无需工作",无需大量配置或专业知识.
virtualenv避免了全局安装Python包的需要.当virtualenv处于活动状态时,pip 将在环境中安装包,这不会以任何方式影响基本Python安装.
在Python 3.3或更高版本中,您可以创建virtualenv,如下所示:
$ python3 -m venv ENV_DIR
Run Code Online (Sandbox Code Playgroud)
对于Windows,您应该替换python3为python.exe的完整路径:
>C:\Python34\python.exe -m venv ENV_DIR
Run Code Online (Sandbox Code Playgroud)
(这是典型的Python安装;您的系统可能会有所不同.)
在旧版本的Python(包括Python 2)中,以下命令之一在大多数情况下都适用:
$ virtualenv ENV_DIR
$ venv ENV_DIR
$ pyvenv ENV_DIR
$ pyvenv3 ENV_DIR
Run Code Online (Sandbox Code Playgroud)
ENV_DIR应该是一个不存在的目录.该目录可以有任何名称,但为了使这些说明简单,我假设您已在名为venv(例如with python3 -m venv ./venv)的目录中创建了virtualenv .
要在virtualenv中工作,请激活它:
$ . ./venv/bin/activate
(venv)$
Run Code Online (Sandbox Code Playgroud)
或者如果你有一个Windows系统,请使用它:
$ venv\Scripts\activate
Run Code Online (Sandbox Code Playgroud)
将(venv)在shell提示让你知道哪些VIRTUALENV您已经激活了,不过你可以关闭此功能,如果你不喜欢它.你可以运行所有常用的Python命令,它们将是你的virtualenv的本地命令:
(venv)$ pip install requests numpy
[...]
(venv)$ python
[...]
>>> import requests
>>> import numpy as np
>>>
Run Code Online (Sandbox Code Playgroud)
python将运行您安装到virtualenv中的Python版本,因此(例如)您不必键入python3以获取Python 3.它运行的Python将可以访问所有标准库模块和您安装的所有软件包进入virtualenv,但(默认情况下)没有安装在系统范围site-packages目录中的软件包.
最后一条规则很重要:通过将virtualenv限制为仅使用本地安装的软件包,您可以确保控制项目正在使用哪些依赖项,即使下周安装或更新了一些新的系统范围软件包.如果您愿意,可以获得已安装软件包的列表:
(venv)$ pip freeze
requests==2.13.0
numpy==1.12.0
(venv)$
Run Code Online (Sandbox Code Playgroud)
pip 也可以解析这种格式并从中安装,它将安装相同的版本,即使在此期间已发布更新:
(venv)$ pip freeze >requirements.txt
(some-other-venv)$ pip install -r requirements.txt
[...]
(some-other-venv)$ python
>>> import requests
>>> import numpy as np
>>>
Run Code Online (Sandbox Code Playgroud)
你可以通过停用它来摆脱virtualenv:
(venv)$ deactivate
$ python
[...]
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'requests'
Run Code Online (Sandbox Code Playgroud)
您可以根据需要创建任意数量的virtualenv,它们不会相互干扰,也不会与系统包相互干扰.virtualenv"只是"一个目录下面有一堆二进制文件和脚本,所以你可以像删除任何目录一样删除virtualenv(rm -r venv在Unix上).如果virtualenv在你删除时被激活,你可能会混淆你的shell,所以deactivate在这种情况下首先可能是个好主意.
安装软件包sudo pip将会全局安装软件包,这可能会破坏一些系统工具。
通过全局安装,这意味着您将就地安装软件包/usr/lib/python2.7/site-package,如果某些软件包需要以前版本的 python 软件包,此操作可能会破坏它。
virtualenv允许您通过创建隔离的 python 环境来避免全局安装 Python 包。这意味着它将仅在您想要的项目文件夹中安装软件包。
在 Mac 和 Linux 上
安装
python3 -m pip install --user virtualenv
Run Code Online (Sandbox Code Playgroud)创建虚拟环境:转到所需的项目文件夹
python3 -m virtualenv env
Run Code Online (Sandbox Code Playgroud)激活 virtualenv:在您想要的项目文件夹中
source env/bin/activate
Run Code Online (Sandbox Code Playgroud)激活后,您可以使用 pip 安装软件包。
有关在 Windows 中使用它的更多信息: 如何在 Windows 中使用 virtualenv
有时您没有获得root特权,并且最终可能无法使用sudo。在许多其他情况下,建议不要使用sudo安装软件包,因为它可能会覆盖某些其他应用程序正在使用的软件包。
Virtualenv可以帮助您创建不需要root特权的单独环境,并能够根据需要定制环境。它由独立的python安装组成,该安装仅与您创建的特定环境交互。
因此,从根本上讲,它给您带来一些自由,同时避免了损坏(或修改)可能承载着旧应用程序许多旧功能的根环境。
安装也很容易。
| 归档时间: |
|
| 查看次数: |
11224 次 |
| 最近记录: |