开放的编程资料库

当前位置:我爱分享网 > Python教程 > 正文

Python

Pythonvenv教程展示了如何使用venv模块在Python中使用虚拟环境。

虚拟环境

复杂的应用程序依赖于许多不同的依赖项。各种应用程序可能依赖于一个库,或同一库的不同版本。由于Python无法区分其site-packages目录中的版本,因此创建了虚拟环境作为解决方案。

包括VisualCode和PyCharm在内的IDE广泛支持虚拟环境。

虚拟环境是一个独立的目录树,其中包含特定版本的Python的Python安装和许多其他包。

setuptoolspip等常用安装工具可以在虚拟环境中正常工作。当虚拟环境处于活动状态时,他们会将Python包安装到虚拟环境中,而无需明确告知这样做。

Python虚拟机

venv模块可以创建具有自己站点目录的轻量级虚拟环境。每个虚拟环境都有自己的Python二进制文件(与用于创建此环境的二进制文件的版本相匹配),并且可以在其站点目录中拥有自己独立的一组已安装Python包。(站点目录是我们安装第三方模块的目录。)

Python创建虚拟环境

接下来我们展示如何创建虚拟环境。

$ python --version
Python 3.8.5
$ python -m venv myenv
. myenv/bin/activate

这些命令在Linux上创建并激活一个新的虚拟环境。

> py --version
Python 3.8.1
> py -m venv myenv
> myenv\Scripts\activate

这些命令在Windows上创建并激活一个新的虚拟环境。

$ ls myenv/
bin  include  lib  lib64  pyvenv.cfg  share

bin目录包含与虚拟环境交互的工具。include目录包含编译Python包的C头文件。lib目录包含Python版本的副本。它还包括site-packages子目录。

pyvenv.cfg是一个配置文件,它存储有关虚拟环境的信息,例如从中克隆环境的原始Python(并将提供标准库)和解释器的版本。

$ cat myenv/pyvenv.cfg
home = /usr/bin
include-system-site-packages = false
version = 3.8.5

这是pyvenv.cfg文件的示例输出。

Python激活虚拟环境

在我们可以使用虚拟环境之前,我们需要先激活它。

$ python -m venv myenv

我们创建一个名为myenv的新虚拟环境。

$ . myenv/bin/activate
(myenv) $

我们激活虚拟环境。我们可以在提示中看到环境的名称。

(myenv) $ echo $PATH
/janbodnar/Documents/prog/python/venv/myenv/bin:/janbodnar/.cargo/bin/:/janbodnar/
Documents/prog/go-workspace/bin/:/janbodnar/.config/composer/vendor/bin/:
... 

PATH环境已更新;虚拟环境的bin目录位于开头。

(myenv) $ which pip python
/root/Documents/prog/python/venv/myenv/bin/pip
/root/Documents/prog/python/venv/myenv/bin/python

which命令返回虚拟环境的pippython的路径。

(myenv) $ deactivate
$

使用deactivate命令,我们终止虚拟环境并返回shell。

Pythonvenv安装包

激活创建的虚拟环境后,pip工具将包安装到环境中。

(myenv) $ pip list
Package       Version
------------- -------
pip           20.0.2
pkg-resources 0.0.0
setuptools    46.1.3

我们使用piplist命令显示可用的包。如我们所见,目前我们只有最少的包。

(myenv) $ pip install requests urllib3

在我们的新环境中,我们安装了requestsurllib3模块。

(myenv) $ pip list
Package       Version
------------- ---------
certifi       2020.6.20
chardet       3.0.4
idna          2.10
pip           20.0.2
pkg-resources 0.0.0
requests      2.24.0
setuptools    46.1.3
urllib3       1.25.10

我们再次列出可用的包。除了requestsurllib3模块之外,我们还通过这两个已安装的模块安装了其他模块。

(myenv) $ pip freeze --local | xargs pip uninstall -y

要进入干净状态并删除所有已安装的软件包,我们可以执行此命令。

(myenv) $ deactivate
$

要跳出虚拟环境,我们使用deactivate命令。

$ pip list
Package                      Version
---------------------------- --------------
adblockparser                0.7
AdvancedHTTPServer           2.2.0
aiocmd                       0.1.2
aiodns                       2.0.0
aiohttp                      3.6.2
aioredis                     1.3.1
aiowinreg                    0.0.3
ajpy                         0.0.4
alembic                      1.4.2.dev0
aniso8601                    8.0.0
apispec                      3.3.1
apispec-webframeworks        0.5.2
APScheduler                  0.0.0
asciitree                    0.3.3
asn1crypto                   1.4.0
...

在虚拟环境之外,我们指的是标准的Python安装。它自然有更多的包。

$ rm -rf myenv/

如果我们不再需要虚拟环境,我们可以简单地删除它的目录。

在本教程中,我们使用venv创建了Python虚拟环境。

阅读Python教程或列出所有Python教程。

未经允许不得转载:我爱分享网 » Python

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏