Conda虚拟环境的复制和迁移过程

作者:

文章目录
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: Python Anaconda创建虚拟环境及Pycharm使用虚拟环境详解 Conda与Python venv虚拟环境的区别与使用方法详解 Conda虚拟环境的复制和迁移的四种方法实现 Python虚拟环境与Conda使用指南分享 Python虚拟环境管理工具Conda的使用指南 Miniconda安装教程和虚拟环境的创建与使用
  • 目录
    • Conda虚拟环境的复制和迁移
      • 在本机复制Conda虚拟环境
      • 相同操作系统之间复制环境
        • 方法一:requirements.txt
        • 方法二 : Environment.yml
        • 方法三:Conda Pack
        • 方法四:直接复制envs目录下的虚拟环境文件夹
    • 总结

      conda create --name 新环境名 --clone 旧环境名
      

      这个方法不推荐,因为只会导出你使用pip安装的依赖包,不会导出虚拟环境所依赖的包,并不适用于虚拟环境的迁移的应用场景。

      事实上,此方法比较适用于,已经明确知道依赖哪些包,我们只需要package信息的情况,如写项目文档,告诉别人运行我这个系统必须安装哪些依赖包。而忽略虚拟环境本身的依赖环境。

      pip freeze > requirements.txt  # 生成requirements.txt
      pip install -r requirements.txt  # 从requirements.txt安装依赖
      

      跨平台和操作系统共享项目环境也可以使用 -export 选项生成 environment.yml 文件来完成。

      规范列表和 environment.yml 文件之间的区别在于 environment.yml 文件不是特定于操作系统的,而是使用 YAML 格式化的。

      只列出包名,conda根据包名搭建环境。

      另一个区别是 -export 还包括使用 pip 安装的包,而 spec 列表不包括。

      要导出 environment.yml 文件:

      conda env export environment.yml
      
      • 请注意,如果路径中已有 environment.yml 文件,conda 将覆盖该文件。

      创建环境:

      conda env create -f environment.yml
      

      Conda-pack 是一个命令行工具,用于打包 conda 环境,其中包括环境中安装的包的所有二进制文件。此法支持断网环境下使用。Environment.yml 是从python依赖包各自的存储库中下载包来创建环境,缺点当然是网速慢、容易下载失败等等。此法就没有这个问题。

      请记住,conda-pack 是特定于平台和操作系统的,目标计算机必须具有与源计算机相同的平台和操作系统。

      要安装 conda-pack,请确保您处于 root 或 base 环境中,以便它在子环境中可用。 Conda-pack 可在 conda-forge 或 PyPI 获得。

      conda-forge:

      conda install -c conda-forge conda-pack
      

      PyPI:

      pip install conda-pack
      

      # Pack environment my_env into my_env.tar.gz
      $ conda pack -n my_env
      
      # Pack environment my_env into out_name.tar.gz
      $ conda pack -n my_env -o out_name.tar.gz
      
      # Pack environment located at an explicit path into my_env.tar.gz
      $ conda pack -p /explicit/path/to/my_env
      
      # Unpack environment into directory `my_env`
      $ mkdir -p my_env
      $ tar -xzf my_env.tar.gz -C my_env
      
      # Use Python without activating or fixing the prefixes. Most Python
      # libraries will work fine, but things that require prefix cleanups
      # will fail.
      $ ./my_env/bin/python
      
      # Activate the environment. This adds `my_env/bin` to your path
      $ source my_env/bin/activate
      
      # Run Python from in the environment
      (my_env) $ python
      
      # Cleanup prefixes from in the active environment.
      # Note that this command can also be run without activating the environment
      # as long as some version of Python is already installed on the machine.
      (my_env) $ conda-unpack
      

      在断网环境下,我们也可以直接从源电脑(以下统称为src电脑)上直接将虚拟环境整个复制到目标电脑(以下统称为target电脑)上。

      前提是target计算机必须具有与src计算机相同的平台和操作系统。

      1、target电脑上安装相同版本的Anaconda。

      2、从src电脑把envs文件夹中需要复制的虚拟环境文件夹复制到target电脑上,位置随便放。

      我们可以通过以下命令来查看src电脑上虚拟环境文件夹的存放路径:

      conda env list
      

      已上图为例,E:ProgramDataAnacondaenvsnew_name 就是虚拟环境new_name的存储路径。我们将它直接复制到target电脑上即可。

      3、在target电脑上,进入conda命令行,使用如下命令:

      conda config --add envs_dirs %复制到target电脑上的envs路径%
      

      注意: 这里的路径是目标虚拟环境文件夹的上级目录!

      举个例子:

      我将上图中的new_name复制到了target电脑上,并重命名为:env_pybd。路径为G:anoconda_envsenv_pybd

      那么我应该用conda执行命令:

      conda config --add envs_dirs G:anoconda_envs
      

      运行成功后,会往 C:user%当前用户名%.condarc 里面添加一条envs_dirs记录,如下图所示:

      再运行

      conda env list
      

      就可以看到,我们已经复制成功了:

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

      您可能感兴趣的文章:

      • Python Anaconda创建虚拟环境及Pycharm使用虚拟环境详解
      • Conda与Python venv虚拟环境的区别与使用方法详解
      • Conda虚拟环境的复制和迁移的四种方法实现
      • Python虚拟环境与Conda使用指南分享
      • Python虚拟环境管理工具Conda的使用指南
      • Miniconda安装教程和虚拟环境的创建与使用

      站内搜索