使用conda打包环境并离线安装的踩坑及解决

 更新时间:2025年11月10日 14:27:45   作者:sinat_38565727  
文章介绍了在没有网络的情况下创建和使用虚拟环境的方法,首先,可以下载所有包(.whl文件),然后离线安装,推荐使用conda-pack工具对虚拟环境进行打包和解包,文章还详细介绍了如何从头开始创建虚拟环境,并使用pip安装所有包,最后,文章总结了虚拟环境打包和解包的步骤

最近工作遇到在没有网络的情况下建虚拟环境,首先是可以先下载所有包(.whl文件),在离线情况下安装,但是适合单个包,整个环境不建议,因为会有大量依赖包,少一个都不行。

虚拟环境打包工具

1.win+R并输入cmd

2.pip安装conda-pack

pip install conda-pack

安装成功后,开始对虚拟环境打包

虚拟环境打包

1.激活需要打包的环境

activate <env_name>

或者
conda activate <env_name>

2.检查环境安装的包

#用于查看conda安装的所有包
conda list
#用户查看pip安装的所有包
pip list

通常安装的包既有conda的也有pip的(比如你安装用的conda,但是更新用的pip),使用是没有问题的,但是打包会出现问题,因为有的包既在pip里也在conda里,打包时会报错,如下:

_CondaPackError: 
Files managed by conda were found to have been deleted/overwritten in the
following packages:
 
- pip='9.0.1'
 
This is usually due to `pip` uninstalling or clobbering conda managed files,
resulting in an inconsistent environment. Please check your environment for
conda/pip conflicts using `conda list`, and fix the environment by ensuring
only one version of each package is installed (conda preferred).

唯一的解决办法是只用conda安装或者pip安装,由于一些包conda没有,所以最好是用pip安装所有包。

下面我将介绍如何从头开始建虚拟环境和安装包。

3.离线创建虚拟环境

如果你的conda和pip都有安装包,那么你可以重建一个环境并只用pip安装。

首先,离线创建一个空的虚拟环境,不要加python版本,因为会直接使用conda安装。

conda create -n env_name --offline

–offline是离线创建的意思,不会安装任何包。

激活环境后,查看安装的包:

可以看到conda list是空的,我们继续用pip安装,现在安装的包里没有python,接下来我们安装python。

4.安装python和其他包

https://www.python.org/downloads/

在这里下载对应版本的python,需要.exe格式的

这里需要注意的是路径配置

找到你的conda/envs这个是存放你的虚拟环境的位置,图上的dd是环境名字,改成你自己创建的环境名字就行,比如上面创建的zz,我只做演示没有修改。

安装成功后,pip也会更新为最新的。你可以通过conda list查看是否为空。如果是,说明没有 任何问题,剩下你所用的包,全部用pip进行安装。

5.虚拟环境打包

接下来我们就可以打包了,输出的是一个tar.gz格式文件

conda pack -n <虚拟环境名字> -o 文件输出的地址

-o是可选项。

在新的机器上,找到conda/envs文件夹,将压缩放在这个文件夹里,并解压,就ok了,你可以通过激活该环境查看是否成功。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Django的MVT设计模式

    详解Django的MVT设计模式

    本章我们将介绍下经典的软件开发所遵循的MVC (Model-View-Controller, 模型-视图-控制器) 设计模式以及Django的MVT设计模式(Model-View-Template)是如何遵循这种设计理念的。
    2021-04-04
  • Python利用socket实现多进程的端口扫描器

    Python利用socket实现多进程的端口扫描器

    作为开发人员经常需要查看服务的端口开启状态判断服务是否宕机。特别是部署的服务比较多的情况下,可能存在几个甚至几十个服务端口的占用。所以本文将利用socket实现多进程的端口扫描器,需要的可以参考一下
    2022-12-12
  • Python高级特性之闭包与装饰器实例详解

    Python高级特性之闭包与装饰器实例详解

    这篇文章主要介绍了Python高级特性之闭包与装饰器,结合实例形式详细分析了Python闭包与装饰器的相关原理、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-11-11
  • Python-openCV开运算实例

    Python-openCV开运算实例

    这篇文章主要介绍了Python-openCV开运算实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等

    python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等

    这篇文章主要为大家详细介绍了python打印9宫格、25宫格等奇数格,满足横竖斜相加和相等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • Python 装饰器原理、定义与用法详解

    Python 装饰器原理、定义与用法详解

    这篇文章主要介绍了Python 装饰器原理、定义与用法,结合实例形式分析了Python装饰器的概念、定义、实现方法、应用场景及相关操作注意事项,需要的朋友可以参考下
    2019-12-12
  • Python Web框架Flask信号机制(signals)介绍

    Python Web框架Flask信号机制(signals)介绍

    这篇文章主要介绍了Python Web框架Flask信号机制(signals)介绍,本文介绍Flask的信号机制,讲述信号的用途,并给出创建信号、订阅信号、发送信号的方法,需要的朋友可以参考下
    2015-01-01
  • Python类的继承与多态详细介绍

    Python类的继承与多态详细介绍

    大家好,本篇文章主要讲的是Python类的继承与多态详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2022-01-01
  • python 剪切移动文件的实现代码

    python 剪切移动文件的实现代码

    移动复制文件通过os.rename方法,先进行文件是否存在判断,如需更加复杂相同文件判断可以根据文件属性进行判断,此处只使用同名检查,并删除已存在文件,来实现覆盖。这篇文章主要介绍了python 剪切移动文件的实现代码,需要的朋友可以参考下
    2018-08-08
  • 使用Python requests库发送JSON数据的POST请求步骤

    使用Python requests库发送JSON数据的POST请求步骤

    在Python这个强大的编程语言中,requests库是一个广泛使用且功能强大的HTTP请求库,发送POST请求并附带JSON数据是一个非常常见的需求,本文给大家介绍了如何用Python的requests库发送JSON数据的POST请求,需要的朋友可以参考下
    2024-06-06

最新评论