Python虚拟环境

为什么要虚拟环境

根据实际开发需求,我们会不断的更新或卸载项目中依赖的Python类库,直接对我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,并且当我们同时开发多个项目的时候,可能每个项目依赖的同一个Python库的版本还不一样,就会造成版本冲突,管理相当混乱。而虚拟环境独立于真实环境存在,并且可以同时拥有多个虚拟环境,每个虚拟环境都可以安装不同的类库、不同版本的类库,对项目的依赖和版本的控制有着非常重要的作用。

Python3管理虚拟环境

Python3提供的命令python3 -m venv可以对虚拟环境进行管理,在使用该命令之前需要安装该命令,其中3.8是当前服务器中Python的版本。

sudo apt-get update
sudo apt-get install -y python3.8-venv

如果对命令不清楚,可以使用python3 -m venv -h来查看帮助。

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear] [--upgrade] [--without-pip]
            [--prompt PROMPT]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks are not the default for the
                        platform.
  --copies              Try to use copies rather than symlinks, even when symlinks are the default for the
                        platform.
  --clear               Delete the contents of the environment directory if it already exists, before environment
                        creation.
  --upgrade             Upgrade the environment directory to use this version of Python, assuming Python has been
                        upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by
                        default)
  --prompt PROMPT       Provides an alternative prompt prefix for this environment.

Once an environment has been created, you may wish to activate it, e.g. by sourcing an activate script in its bin
directory.

创建虚拟环境

Python3可以通过命令来创建一个虚拟环境,需要指定虚拟环境的创建路径EVN_DIR

python3 -m venv EVN_DIR

下面来创建一个虚拟环境pyspark

python3 -m venv /home/wux_labs/pyspark

在这里插入图片描述

激活虚拟环境

虚拟环境创建完成后,要想使用已创建的虚拟环境,包括在虚拟环境中安装类库、使用虚拟环境的类库等,需要先将环境激活,激活过程使用命令:

source /home/wux_labs/pyspark/bin/activate

激活完成后,可以看到命令行前面的环境标志:

在这里插入图片描述
此时,对Python的操作都是基于当前虚拟环境pyspark的,包括安装依赖库等,不会影响其他环境。

sudo apt-get install -y python3-pip
pip list

在这里插入图片描述

虚拟环境的其他命令

  • 解除虚拟环境激活

以下命令会解除当前环境的激活状态。

deactivate

在这里插入图片描述

  • 删除虚拟环境

要删除一个虚拟环境,只需要删除虚拟环境对应的文件夹即可。

rm -rf pyspark

Anaconda3管理虚拟环境

Anaconda可以通过命令conda env来对虚拟环境进行管理。其语法如下:

usage: conda-env [-h] {create,export,list,remove,update,config} ...

positional arguments:
  {create,export,list,remove,update,config}
    create              Create an environment based on an environment file
    export              Export a given environment
    list                List the Conda environments
    remove              Remove an environment
    update              Update the current environment based on environment file
    config              Configure a conda environment

其中最常用的有:

  • create 创建虚拟环境
  • list 列出已有的虚拟环境
  • remove 移出虚拟环境

也可以直接使用conda create命令进行虚拟环境的创建。创建命令是:

conda create --name env_name python=x.x

--name可简写为-n即:

conda create -n env_name python=x.x

创建虚拟环境

可以通过conda create命令来创建一个虚拟环境。

conda create -n pyspark python=3.9

其创建过程中会输出类似以下的日志:

Collecting package metadata (current_repodata.json): done
Solving environment: done


==> WARNING: A newer version of conda exists. <==
  current version: 4.10.3
  latest version: 22.11.1

Please update conda by running

    $ conda update -n base -c defaults conda



## Package Plan ##

  environment location: /home/wux_labs/anaconda3/envs/pyspark

  added / updated specs:
    - python=3.9


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    _openmp_mutex-5.1          |            1_gnu          21 KB
    ca-certificates-2022.10.11 |       h06a4308_0         124 KB
    certifi-2022.9.24          |   py39h06a4308_0         154 KB
    ld_impl_linux-64-2.38      |       h1181459_1         654 KB
    libffi-3.4.2               |       h6a678d5_6         136 KB
    libgcc-ng-11.2.0           |       h1234567_1         5.3 MB
    libgomp-11.2.0             |       h1234567_1         474 KB
    libstdcxx-ng-11.2.0        |       h1234567_1         4.7 MB
    ncurses-6.3                |       h5eee18b_3         781 KB
    openssl-1.1.1s             |       h7f8727e_0         3.6 MB
    pip-22.3.1                 |   py39h06a4308_0         2.7 MB
    python-3.9.15              |       h7a1cb2a_2        25.0 MB
    readline-8.2               |       h5eee18b_0         357 KB
    setuptools-65.5.0          |   py39h06a4308_0         1.1 MB
    sqlite-3.40.0              |       h5082296_0         1.2 MB
    tk-8.6.12                  |       h1ccaba5_0         3.0 MB
    tzdata-2022g               |       h04d1e81_0         114 KB
    wheel-0.37.1               |     pyhd3eb1b0_0          33 KB
    xz-5.2.8                   |       h5eee18b_0         429 KB
    zlib-1.2.13                |       h5eee18b_0         103 KB
    ------------------------------------------------------------
                                           Total:        50.0 MB

The following NEW packages will be INSTALLED:

  _libgcc_mutex      pkgs/main/linux-64::_libgcc_mutex-0.1-main
  _openmp_mutex      pkgs/main/linux-64::_openmp_mutex-5.1-1_gnu
  ca-certificates    pkgs/main/linux-64::ca-certificates-2022.10.11-h06a4308_0
  certifi            pkgs/main/linux-64::certifi-2022.9.24-py39h06a4308_0
  ld_impl_linux-64   pkgs/main/linux-64::ld_impl_linux-64-2.38-h1181459_1
  libffi             pkgs/main/linux-64::libffi-3.4.2-h6a678d5_6
  libgcc-ng          pkgs/main/linux-64::libgcc-ng-11.2.0-h1234567_1
  libgomp            pkgs/main/linux-64::libgomp-11.2.0-h1234567_1
  libstdcxx-ng       pkgs/main/linux-64::libstdcxx-ng-11.2.0-h1234567_1
  ncurses            pkgs/main/linux-64::ncurses-6.3-h5eee18b_3
  openssl            pkgs/main/linux-64::openssl-1.1.1s-h7f8727e_0
  pip                pkgs/main/linux-64::pip-22.3.1-py39h06a4308_0
  python             pkgs/main/linux-64::python-3.9.15-h7a1cb2a_2
  readline           pkgs/main/linux-64::readline-8.2-h5eee18b_0
  setuptools         pkgs/main/linux-64::setuptools-65.5.0-py39h06a4308_0
  sqlite             pkgs/main/linux-64::sqlite-3.40.0-h5082296_0
  tk                 pkgs/main/linux-64::tk-8.6.12-h1ccaba5_0
  tzdata             pkgs/main/noarch::tzdata-2022g-h04d1e81_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/linux-64::xz-5.2.8-h5eee18b_0
  zlib               pkgs/main/linux-64::zlib-1.2.13-h5eee18b_0


Proceed ([y]/n)? y


Downloading and Extracting Packages
python-3.9.15        | 25.0 MB   | ######################################################################### | 100% 
pip-22.3.1           | 2.7 MB    | ######################################################################### | 100% 
tzdata-2022g         | 114 KB    | ######################################################################### | 100% 
openssl-1.1.1s       | 3.6 MB    | ######################################################################### | 100% 
zlib-1.2.13          | 103 KB    | ######################################################################### | 100% 
libffi-3.4.2         | 136 KB    | ######################################################################### | 100% 
ncurses-6.3          | 781 KB    | ######################################################################### | 100% 
ca-certificates-2022 | 124 KB    | ######################################################################### | 100% 
libgcc-ng-11.2.0     | 5.3 MB    | ######################################################################### | 100% 
readline-8.2         | 357 KB    | ######################################################################### | 100% 
tk-8.6.12            | 3.0 MB    | ######################################################################### | 100% 
wheel-0.37.1         | 33 KB     | ######################################################################### | 100% 
certifi-2022.9.24    | 154 KB    | ######################################################################### | 100% 
xz-5.2.8             | 429 KB    | ######################################################################### | 100% 
sqlite-3.40.0        | 1.2 MB    | ######################################################################### | 100% 
_openmp_mutex-5.1    | 21 KB     | ######################################################################### | 100% 
libstdcxx-ng-11.2.0  | 4.7 MB    | ######################################################################### | 100% 
setuptools-65.5.0    | 1.1 MB    | ######################################################################### | 100% 
libgomp-11.2.0       | 474 KB    | ######################################################################### | 100% 
ld_impl_linux-64-2.3 | 654 KB    | ######################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate pyspark
#
# To deactivate an active environment, use
#
#     $ conda deactivate

查看虚拟环境

虚拟环境创建完成后,可以使用命令conda env list查看当前系统中存在的虚拟环境。

$ conda env list
# conda environments:
#
base                  *  /home/wux_labs/anaconda3
pyspark                  /home/wux_labs/anaconda3/envs/pyspark

在这里插入图片描述

可以看到当前环境中除了默认的base外,还有我们刚创建的虚拟环境pyspark

激活虚拟环境

虚拟环境创建完成后,要想使用已创建的虚拟环境,包括在虚拟环境中安装类库、使用虚拟环境的类库等,需要先将环境激活,按照安装日志的最后输出的提示,可以使用conda activate pyspark来激活pyspark虚拟环境。

conda activate pyspark

激活完成后,可以看到命令行前面的环境标志:

(pyspark) wux_labs@wux-labs-vm:~$

在这里插入图片描述
此时,对Python的操作都是基于当前虚拟环境pyspark的,包括安装依赖库等,不会影响其他环境。

虚拟环境的其他命令

  • 解除虚拟环境激活

以下命令会解除当前环境的激活状态,并切换回base环境。

conda deactivate

在这里插入图片描述

  • 删除虚拟环境

以下命令用于删除一个已有的虚拟环境。

conda env remove -n pyspark

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wux_labs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值