Python虚拟环境使用教程(以虚拟环境管理工具venv为例)(virtualenv、venv、pyenv、virtualenvwrapper、conda不同管理工具对比)

python虚拟环境

介绍

Python虚拟环境是一种用于隔离不同Python项目所需依赖的机制。它允许在同一台机器上同时管理多个Python项目,每个项目都可以有自己独立的Python版本和依赖库,互不干扰。

注意:虚拟环境主要是防止我们项目之间python3版本或者库冲突的,虚拟环境中并没有独立的解释器,还是得依赖主机的python3和python3-venv

原理(管理工具太多,以venv为例,下同)

venv是Python自带的虚拟环境管理工具,用于创建和管理独立的Python环境。它的原理主要包括以下几个方面:

  1. 目录结构:venv会在指定的目录下创建一个独立的Python环境。该目录包含一个bin(或Scripts)子目录,其中包含了Python解释器和其他与环境相关的可执行文件。

  2. Python解释器:venv会在指定目录下复制一份Python解释器。这个解释器是一个独立的副本,与系统中的Python解释器相互隔离。

  3. 环境变量:venv会在指定目录下创建一个activate脚本(或activate.bat),用于设置环境变量。运行该脚本后,会将指定目录下的Python解释器添加到系统的PATH环境变量中,使得在该虚拟环境下运行的Python程序能够使用正确的解释器。

  4. 包管理:venv会在指定目录下创建一个独立的site-packages目录,用于存放虚拟环境中安装的Python包。在虚拟环境中安装的包不会影响系统中的Python包,从而实现了包的隔离管理。

通过以上原理,venv实现了Python虚拟环境的创建和管理。使用venv可以方便地为不同的项目创建独立的Python环境,避免了包冲突和环境污染的问题。

在这里插入图片描述

参考文章:Python - Comprendre et démystifier virtualenv

注意:venv工具只能在Python 3.3及以上版本中使用。在Python 3.3之前,Python自带的虚拟环境管理工具是virtualenvvirtualenv是一个第三方库,可以在Python 2.x和Python 3.x中使用。

从Python 3.3开始,Python内置了venv模块,成为了Python的标准库,用于创建和管理虚拟环境。venv相比于virtualenv更加轻量和简单,因此在Python 3.3及以上版本中推荐使用venv来管理虚拟环境。

如果使用的是Python 3.3以下的版本,可以考虑使用virtualenv来创建和管理虚拟环境。安装virtualenv可以使用pip命令:pip install virtualenv。安装完成后,可以使用virtualenv命令来创建虚拟环境。

安装与使用

以下是在Linux中安装以及使用Python虚拟环境的详细步骤:

1. 安装虚拟环境工具(如果尚未安装)

$ sudo apt-get install python3-venv

2. 创建一个新的虚拟环境

$ python3.8 -m venv myenv

这将在当前目录下创建一个名为myenv的虚拟环境。

初始状态下虚拟环境是空的,里面没有任何包或依赖库。

python3.8 -m venv myenv命令会在当前目录下创建一个名为myenv的虚拟环境文件夹。该文件夹中包含了一个独立的Python解释器,以及一些用于管理虚拟环境的脚本和工具。

3. 激活虚拟环境

$ source myenv/bin/activate

在创建虚拟环境后,需要激活虚拟环境才能使用它。激活虚拟环境会将该虚拟环境的Python解释器添加到系统的环境变量中,使得在命令行中运行python命令时,默认使用虚拟环境中的解释器。

激活虚拟环境后,将看到命令行提示符前面有(myenv)字样,表示已经进入了虚拟环境。

可以使用pip命令来安装所需的包和依赖库,以及进行其他的Python开发工作。

4. 安装依赖库

在虚拟环境中,可以使用pip命令安装所需的Python依赖库,例如:

(myenv) $ pip install requests

5. 运行Python程序

在虚拟环境中,可以使用python命令运行Python程序,例如:

(myenv) $ python myscript.py

6. 退出虚拟环境

当完成了当前项目的开发或者需要切换到其他项目时,可以使用以下命令退出虚拟环境:

(myenv) $ deactivate

此时,命令行提示符将恢复为正常状态。

通过使用Python虚拟环境,可以轻松地管理不同项目的依赖关系,避免了不同项目之间的冲突,并且可以保持每个项目的独立性。

7. 删除虚拟环境

要删除虚拟环境,你可以按照以下步骤进行操作:

  1. 打开终端或命令提示符。

  2. 使用以下命令来删除它:

    python -m venv --clear path/to/venv
    

    请将path/to/venv替换为你要删除的虚拟环境的路径。

    这个命令将删除虚拟环境的所有文件和目录。

我不能直接删除虚拟环境目录吗?

是的,你可以直接删除虚拟环境目录来删除虚拟环境。虚拟环境目录是一个包含虚拟环境文件和目录的文件夹,通常以.venvvenv命名。

要删除虚拟环境目录,你可以按照以下步骤进行操作:

  1. 打开终端或命令提示符。

  2. 确定要删除的虚拟环境目录的路径。

  3. 使用操作系统提供的文件管理器或命令行工具,删除虚拟环境目录。你可以使用以下命令来删除目录:

    • 在Windows上,使用以下命令删除目录:

      rmdir /s /q path/to/venv
      
    • 在Linux和macOS上,使用以下命令删除目录:

      rm -rf path/to/venv
      

    请将path/to/venv替换为你要删除的虚拟环境目录的路径。

请注意,直接删除虚拟环境目录将永久删除其中的所有文件和安装的软件包,所以请确保你不再需要该虚拟环境中的任何内容。如果你计划重新创建虚拟环境,请确保在删除之前备份任何重要的文件或数据。

那你为什么还用python -m venv --clear path/to/venv?区别在哪

使用python -m venv --clear path/to/venv命令可以清除虚拟环境中的所有文件和目录,包括已安装的软件包和Python解释器。这个命令会将虚拟环境还原到初始状态,就像刚创建时一样。

与直接删除虚拟环境目录相比,使用python -m venv --clear命令有以下区别:

  1. 清除虚拟环境:python -m venv --clear命令会执行一些额外的清理操作,以确保虚拟环境中的所有文件和目录都被正确删除。这包括删除已安装的软件包、Python解释器和其他虚拟环境相关的文件。

  2. 保留虚拟环境配置:使用python -m venv --clear命令清除虚拟环境后,虚拟环境目录仍然存在,但其中的文件和目录已被删除。这意味着你可以在需要时重新激活虚拟环境,并重新安装所需的软件包,而无需重新创建虚拟环境。

总之,使用python -m venv --clear命令可以更彻底地清除虚拟环境,并保留虚拟环境的配置,以便在需要时重新使用。但是,如果你确定不再需要虚拟环境中的任何内容,直接删除虚拟环境目录也是一个有效的方法。

虚拟环境主机间移植

可以将虚拟环境从一个主机移植到另一个主机。以下是一种常见的方法:

1. 拷贝

在源主机上,将整个虚拟环境文件夹复制到目标主机。假设虚拟环境文件夹名为myenv,源主机的路径为/path/to/source,目标主机的路径为/path/to/destination。可以使用scp命令或其他文件传输工具来复制文件夹:

$ scp -r /path/to/source/myenv user@destination:/path/to/destination

2. 激活

在目标主机上,进入虚拟环境文件夹,并激活虚拟环境:

$ cd /path/to/destination/myenv
$ source bin/activate

这样,就成功将虚拟环境从源主机移植到目标主机,并在目标主机上重新创建了相同的虚拟环境。

需要注意的是,虚拟环境的移植可能会受到不同主机之间的操作系统和Python版本的差异影响。确保目标主机上的操作系统和Python版本与源主机兼容,以避免出现兼容性问题。

生产环境下python虚拟环境项目开机自启配置

如果有多个项目需要在开机时自启动,并且每个项目都有不同的虚拟环境,可以为每个项目创建一个启动脚本,并在脚本中指定相应的虚拟环境。

以下是一种常见的方法:

  1. 创建一个启动脚本文件,比如start_project1.sh,用于启动project1项目。在脚本中,需要指定虚拟环境的路径,并激活虚拟环境。假设project1的虚拟环境路径为/path/to/project1/venv,项目的入口文件为main.py,脚本内容如下:
#!/bin/bash

# 激活虚拟环境
source /path/to/project1/venv/bin/activate

# 运行项目
python /path/to/project1/main.py
  1. 将脚本文件设置为可执行:
$ chmod +x start_project1.sh
  1. 将启动脚本添加到系统的启动项中。具体的方法可能因操作系统而异。以下是一种常见的方法:
  • 对于Systemd(如Ubuntu 16.04+):
    创建一个project1.service文件,内容如下:
[Unit]
Description=Project1 Service
After=network.target

[Service]
ExecStart=/path/to/start_project1.sh

[Install]
WantedBy=multi-user.target

project1.service文件复制到/etc/systemd/system/目录下:

$ sudo cp project1.service /etc/systemd/system/

启用服务并设置开机自启:

$ sudo systemctl enable project1.service
  • 对于SysVinit(如Ubuntu 14.04-):
    将启动脚本的路径添加到/etc/rc.local文件中:
$ sudo nano /etc/rc.local

在文件中添加以下内容(在exit 0行之前):

/path/to/start_project1.sh

通过以上步骤,可以为每个项目创建一个启动脚本,并将其添加到系统的启动项中。这样,每次开机时,系统会自动启动相应的项目,并使用正确的虚拟环境。

python虚拟环境管理工具介绍

Python虚拟环境管理工具是用于创建、激活、管理和删除Python虚拟环境的工具。以下是一些常用的Python虚拟环境管理工具及其作用:

常用虚拟环境管理工具

1. venv

venv是Python自带的虚拟环境管理工具,从Python 3.3版本开始引入。它可以创建、激活和管理虚拟环境,使用简单方便。

2. virtualenv

virtualenv是一个第三方的Python虚拟环境管理工具,可以在Python 2和Python 3上使用。它提供了更多的功能和选项,例如可以指定Python解释器版本、创建基于现有环境的虚拟环境等。

3. conda

conda是一个流行的开源虚拟环境和包管理工具,适用于Python和其他编程语言。它可以创建、激活和管理虚拟环境,并提供了强大的包管理功能,可以方便地安装、更新和删除包。

4. pyenv

pyenv是一个用于管理多个Python版本的工具。它允许在同一台计算机上安装和切换不同的Python版本,并为每个项目选择适当的Python版本。

以下是pyenv的一些主要特点和用法:

  1. 安装Python版本:pyenv可以帮助安装多个Python版本。可以使用pyenv install命令来安装特定版本的Python。例如,要安装Python 3.9.2,可以运行以下命令:

    pyenv install 3.9.2
    
  2. 切换Python版本:使用pyenv,你可以轻松地在不同的Python版本之间进行切换。通过pyenv global命令设置全局Python版本,通过pyenv local命令设置项目级别的Python版本。例如,要将全局Python版本设置为3.9.2,可以运行以下命令:

    pyenv global 3.9.2
    
  3. 列出可用的Python版本:使用pyenv versions命令可以列出所有已安装的Python版本。例如,运行以下命令来列出所有可用的Python版本:

    pyenv versions
    
  4. 创建虚拟环境:pyenv还提供了一个插件pyenv-virtualenv,用于创建和管理Python虚拟环境。通过使用pyenv-virtualenv插件,你可以在不同的Python版本之间创建和切换虚拟环境。要安装pyenv-virtualenv插件,可以运行以下命令:

    git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
    

    安装完成后,你可以使用pyenv virtualenv命令来创建虚拟环境。例如,要在Python 3.9.2中创建一个名为myenv的虚拟环境,可以运行以下命令:

    pyenv virtualenv 3.9.2 myenv
    

    要激活虚拟环境,可以使用pyenv activate命令:

    pyenv activate myenv
    

    要退出虚拟环境,可以使用pyenv deactivate命令:

    pyenv deactivate
    

pyenv是一个非常有用的工具,可以帮助管理多个Python版本和虚拟环境。它适用于开发人员在不同项目中使用不同的Python版本的情况。

5. virtualenvwrapper

virtualenvwrapper是一个用于管理Python虚拟环境的第三方工具,它提供了一组命令和功能,使得创建、切换和删除虚拟环境更加方便。

以下是使用virtualenvwrapper的基本步骤:

  1. 安装virtualenvwrapper:在命令行中运行以下命令来安装virtualenvwrapper(确保已经安装了Python):

    pip install virtualenvwrapper
    
  2. 配置环境变量:virtualenvwrapper需要设置一个环境变量来指定虚拟环境的存储位置。在你的shell配置文件(如.bashrc.bash_profile.zshrc)中添加以下行:

    export WORKON_HOME=~/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    
  3. 重新加载shell配置文件:运行以下命令来重新加载shell配置文件,使配置生效:

    source ~/.bashrc
    
  4. 创建虚拟环境:使用mkvirtualenv命令来创建虚拟环境。

使用virtualenvwrapper创建虚拟环境时,可以通过指定PROJECT_HOME环境变量来设置虚拟环境的存储位置。默认情况下,虚拟环境会被创建在$HOME/.virtualenvs目录下,但可以将其更改为项目目录。

以下是将虚拟环境创建在项目目录下的步骤:

  • 在shell配置文件(如.bashrc.bash_profile.zshrc)中添加以下行:

    export PROJECT_HOME=/path/to/your/project
    export WORKON_HOME=$PROJECT_HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    

    /path/to/your/project替换为项目目录的实际路径。

  • 重新加载shell配置文件:运行以下命令来重新加载shell配置文件,使配置生效:

    source ~/.bashrc
    
  • 创建虚拟环境:使用mkvirtualenv命令来创建虚拟环境。例如,运行以下命令来创建一个名为myenv的虚拟环境:

    mkvirtualenv myenv
    

    虚拟环境将会被创建在你的项目目录下的.virtualenvs子目录中。

请注意,使用virtualenvwrapper创建的虚拟环境仍然可以通过workon命令来激活和切换。只是虚拟环境的存储位置被设置为项目目录下的.virtualenvs子目录。

  1. 激活虚拟环境:创建虚拟环境后,它会自动激活。你可以通过运行以下命令来手动激活虚拟环境:

    workon myenv
    
  2. 使用虚拟环境:激活虚拟环境后,你可以在其中安装和使用包,运行Python命令等。

  3. 退出虚拟环境:在命令行中运行以下命令来退出虚拟环境:

    deactivate
    
  4. 删除虚拟环境:在命令行中运行以下命令来删除虚拟环境:

    rmvirtualenv myenv
    

virtualenvwrapper还提供了其他一些有用的命令和功能,例如列出所有虚拟环境、切换虚拟环境等。可以通过运行workon命令来列出所有的虚拟环境。

venv和virtualenv区别,还有pyenv

venv模块是Python3.3之后标准库自带的虚拟环境创建和管理工具,在一定程度上能够替代virtualenv。但venv是Python3.3才有的,Python2.X不能使用,而virtualenv同时支持Python2.X和Python3.X,特别是在当前的生产环境中Python2.X还占有很大比例的情况下我们依然需要virtualenv。
参考文章:Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了

一般我们解释器不用python3.3以下,就用venv就行了,命令也简单(pyenv貌似比较强大,但是感觉有点复杂,没深入研究过。。。):

创建:

python3.8 -m venv /path/to/venv_xxx

激活:

source /path/to/venv_xxx/bin/activate

退出:

deactivate

相关疑问

创建虚拟机环境是基于已有的python解释器吗?(是)

创建虚拟环境时,可以选择基于系统中已有的Python解释器,也可以选择安装一个新的Python解释器。

如果选择基于已有的Python解释器创建虚拟环境,那么虚拟环境将使用系统中已安装的Python解释器作为基础。这意味着虚拟环境将与系统中的Python解释器共享相同的Python版本和可执行文件。

例如,如果在系统中安装了Python 3.8,并使用python3.8 -m venv myenv命令创建虚拟环境,那么虚拟环境将使用系统中的Python 3.8解释器作为基础。

另一方面,如果选择安装一个新的Python解释器来创建虚拟环境,那么虚拟环境将使用新安装的Python解释器作为基础。这意味着虚拟环境将拥有独立的Python版本和可执行文件。

例如,如果在系统中没有安装Python解释器,但下载并安装了Python 3.9,并使用python3.9 -m venv myenv命令创建虚拟环境,那么虚拟环境将使用新安装的Python 3.9解释器作为基础。

无论选择基于已有的Python解释器还是安装一个新的Python解释器来创建虚拟环境,虚拟环境都将是独立的,并且可以在其中安装和管理自己的包和依赖库。这样可以确保不同项目之间的依赖关系不会相互干扰。

虚拟环境安装的库是否会影响非虚拟环境的库?(不会)

虚拟环境中安装的库不会影响非虚拟环境中的库。虚拟环境是一个独立的环境,它有自己的包管理和依赖关系。在虚拟环境中安装的库只会对该虚拟环境生效,不会影响到系统中的其他Python环境或其他虚拟环境。

当激活虚拟环境后,系统会将虚拟环境中的Python解释器添加到环境变量中,使得在命令行中运行python命令时,默认使用虚拟环境中的解释器。

例如,如果在虚拟环境中安装了一个特定版本的包,而在系统中的其他Python环境中没有安装该包,那么在虚拟环境中运行的Python程序将使用虚拟环境中的包,而在非虚拟环境中运行的Python程序将使用系统中的其他包(如果有的话)。

这种隔离的机制使得可以在不同的项目中使用不同的依赖库版本,而不会相互干扰。每个虚拟环境都可以拥有自己独立的包和依赖库,使得项目之间的依赖关系更加清晰和可控。

不同的虚拟环境,可能解释器版本相同,它们安装了很多相同版本的库,这样不是很占用空间吗?(是的)

如果在不同的虚拟环境中安装了相同版本的库,那么这些库的副本将会占用额外的磁盘空间。这可能会导致一些重复的文件和依赖关系存在于不同的虚拟环境中,从而占用更多的存储空间。

然而,虚拟环境的目的是为了隔离不同的项目和依赖关系,使得每个项目都可以拥有独立的环境。这种隔离可以确保项目之间的依赖关系不会相互干扰,从而提供更好的可维护性和可控性。

虽然在不同的虚拟环境中可能会存在一些重复的库副本,但这种重复通常是可以接受的。现代的硬盘驱动器通常具有足够的存储空间,可以容纳多个虚拟环境和它们的库副本。

如果对磁盘空间的使用非常关注,可以考虑使用一些工具来管理虚拟环境和库的依赖关系,以减少重复的副本。例如,可以使用pip--system-site-packages选项来允许虚拟环境访问系统中已安装的库,从而避免重复安装相同的库。

总的来说,虽然在不同的虚拟环境中可能会存在一些重复的库副本,但这是为了保证项目之间的隔离和独立性。在现代硬盘驱动器的条件下,这种重复的副本通常是可以接受的。

不同主机python3-venv版本不同问题

不同版本的python3-venv兼容吗,比如我这台主机是3.8的python3-venv,我把虚拟环境弄到另一台主机,发现是3.6的python3-venv,能兼容吗?

Python的虚拟环境(venv)是与特定Python版本相关的工具。不同版本的Python可能会有不同的venv实现和功能。因此,虚拟环境在不同版本的Python之间可能不兼容。

如果你在一台主机上使用Python 3.8的venv创建了虚拟环境,并尝试将该虚拟环境复制到另一台主机上,该主机上的Python版本为3.6,可能会遇到兼容性问题。因为Python 3.8的venv可能包含3.8特定的功能和库,而在Python 3.6上可能不支持。

为了确保兼容性,建议在目标主机上使用相同版本的Python来创建虚拟环境。这样可以确保虚拟环境中的Python版本与主机上的Python版本匹配,避免潜在的兼容性问题。

如果你需要在不同版本的Python之间共享虚拟环境,可以考虑使用其他工具,如conda环境管理器,它可以提供跨Python版本的兼容性。

按你上面那样说,如果我这台主机是3.8的python3-venv,我把虚拟环境弄到另一台主机,发现是3.6的python3-venv,我可以在目标主机上直接安装python3.8-venv,是否还需要在目标主机安装python3.8?

是的,如果你将虚拟环境从一台主机复制到另一台主机,并且目标主机上的Python版本与源主机不同,你需要在目标主机上安装与虚拟环境中使用的Python版本相匹配的Python。

在你的情况下,如果源主机上的虚拟环境是使用Python 3.8的venv创建的,而目标主机上的Python版本是3.6,你需要在目标主机上安装Python 3.8以及相应的venv模块。

安装Python 3.8的步骤可能因操作系统而异。你可以通过以下步骤在目标主机上安装Python 3.8:

  1. 检查目标主机上是否已经安装了Python 3.8。你可以在终端或命令提示符下运行以下命令来检查Python版本:

    python3.8 --version
    

    如果已经安装了Python 3.8,则会显示Python版本号。如果没有安装,你需要进行下一步。

  2. 下载Python 3.8的安装程序。你可以从Python官方网站(https://www.python.org/downloads/)下载适用于你的操作系统的Python 3.8安装程序。

  3. 运行安装程序并按照提示进行安装。确保在安装过程中选择将Python 3.8添加到系统路径中。

  4. 安装完成后,你可以再次运行以下命令来验证Python 3.8是否已成功安装:

    python3.8 --version
    

    如果显示Python 3.8的版本号,则表示安装成功。

安装完Python 3.8后,你可以使用以下命令创建一个新的虚拟环境,并将源主机上的虚拟环境复制到目标主机上:

python3.8 -m venv /path/to/new/venv

请将/path/to/new/venv替换为你想要创建虚拟环境的路径。

这样,你就可以在目标主机上使用与源主机相同的Python版本和虚拟环境了。

参考文章

代码详解:Python虚拟环境的原理及使用

Python虚拟环境pyenv、venv(pyvenv)、virtualenv之间的区别,终于搞清楚了

  • 17
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中有三种常用的虚拟环境管理工具,分别是virtualenvvenvconda。其中,venvPython自带的虚拟环境管理器,而virtualenv则是一个第三方库,而conda则是一个独立的虚拟环境和包管理工具。 引用中提到了如何使用virtualenvvenv创建虚拟环境,并且可以通过指定不同Python解释器来控制虚拟环境中的Python版本。这对于需要在不同Python版本之间切换的开发者来说非常有用。 引用中指出了conda相比于virtualenv/venv的一个重要优势,即在使用conda时,虚拟环境中的Python版本不受系统Python版本的限制。这意味着可以在同一台机器上同时使用不同版本的Python,而不会相互冲突。 引用中对venvconda进行了比较,指出了它们的一些区别。venv是一个虚拟环境管理器,而pip是一个包管理器,而conda则结合了两者的功能。虽然conda的包管理器功能相对较弱,大多数时候还是使用pip来安装包。但是,conda可以安装一些非Python的工具软件,而pip只能安装Python的包。此外,conda虚拟环境管理功能相对较好,允许多个项目共享一个虚拟环境,并且虚拟环境是独立于操作系统解释器环境的,不受操作系统解释器版本的限制。 总结起来,虚拟环境管理工具venvvirtualenv主要用于创建和管理Python虚拟环境,而conda则更强大一些,除了可以创建和管理虚拟环境外,还可以安装非Python的工具软件,并且不受系统Python版本的限制。具体选择哪种工具可以根据具体的需求和项目特点进行选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python3基础知识复习 -- 虚拟环境(conda VS venv)](https://blog.csdn.net/peanutfish/article/details/125023770)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dontla

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

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

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

打赏作者

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

抵扣说明:

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

余额充值