当前位置: 首页 > news >正文

助conda命令把环境导出为一个文件,然后在 Linux 系统里利用该文件重新创建相同的环境

1.不导出环境,仅仅导出所有的程序包

conda env export --no-builds | findstr /v "prefix" > environment_all_pkgs.yml

2.安装程序包

pip install pyyaml

3.使用下面的程序拆分出environment_all_pkgs.yml的内容为2个文件:conda_deps.yml 文件和pip_deps.txt

import yaml# 读取 YAML 文件
with open('environment_all_pkgs.yml', 'r') as file:data = yaml.safe_load(file)# 提取 Conda 包
conda_dependencies = [dep for dep in data.get('dependencies', []) if not isinstance(dep, dict) or 'pip' not in dep]# 提取 pip 包
pip_dependencies = []
for dep in data.get('dependencies', []):if isinstance(dep, dict) and 'pip' in dep:pip_dependencies.extend(dep['pip'])# 保存 Conda 包到文件
with open('conda_dependencies.yml', 'w') as file:file.write('dependencies:\n')for dep in conda_dependencies:file.write(f'  - {dep}\n')# 保存 pip 包到文件
with open('pip_dependencies.txt', 'w') as file:for dep in pip_dependencies:file.write(dep + '\n')

4.安装 Conda 包
可以手动提取 YAML 文件中的 Conda 包信息,或者使用 Python 脚本进行提取,然后使用 conda install 命令安装:
# 假设已经提取出 Conda 包信息到 conda_deps.yml 文件
conda install --file conda_deps.yml

5.安装 pip 包
同样,可以手动提取 YAML 文件中的 pip 包信息到一个文本文件(如 pip_deps.txt),然后使用 pip 命令安装:
pip install -r pip_deps.txt

最好的方式是让豆包或deepseek之类的AI按照上面的要求分析environment_all_pkgs.yml,再导入。

------------------------------------------------------------------------------------------------------------

1. 在 Windows 系统中导出环境 首先,你得激活想要导出的环境。接着,使用conda env export命令将环境信息导出到一个 YAML 文件。 假设你要导出的环境名为myenv,可以按如下步骤操作: (1)激活环境:

conda activate myenv

(2)导出环境到 YAML 文件:

conda env export > environment.yml

此操作会在当前目录下生成一个名为environment.yml的文件,其中包含了环境的所有信息。

2. 将导出的文件传输到 Linux 系统 你可以使用各种文件传输工具,如scp(如果 Linux 系统开启了 SSH 服务),把environment.yml文件从 Windows 系统传输到 Linux 系统。

3. 在 Linux 系统中创建新环境 把文件传输到 Linux 系统后,使用conda env create命令依据environment.yml文件创建新环境。

conda env create -f environment.yml

注意事项 若环境中存在特定于 Windows 或 Linux 的包,可能会在创建环境时出现问题。

你可以通过编辑environment.yml文件,去除这些特定于操作系统的包,或者手动安装这些包。

有时候,conda env export命令会包含当前系统的路径信息,这可能会对跨系统使用造成影响。

你可以使用以下命令仅导出包的名称和版本:

conda env export --from-history > environment.yml

通过以上步骤,你就能把 Windows 系统中的conda环境导出并在 Linux 系统中重新创建。

下面是conda env export > environment_py310.yml导出的一个文件示例:
 

name: py310
channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- conda-forge- bioconda- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- defaults- https://repo.anaconda.com/pkgs/main- https://repo.anaconda.com/pkgs/r- https://repo.anaconda.com/pkgs/msys2
dependencies:- altgraph=0.17.4=pyhd8ed1ab_1- bzip2=1.0.8=h2466b09_7- ca-certificates=2025.1.31=h56e8100_0- future=1.0.0=pyhd8ed1ab_2- importlib-metadata=8.6.1=pyha770c72_0- intel-openmp=2024.2.1=h57928b3_1083- joblib=1.4.2=pyhd8ed1ab_1- libblas=3.9.0=31_h641d27c_mkl- libcblas=3.9.0=31_h5e41251_mkl- libffi=3.4.6=h537db12_0- libhwloc=2.11.2=default_ha69328c_1001- libiconv=1.18=h135ad9c_1- liblapack=3.9.0=31_h1aa476e_mkl- liblzma=5.6.4=h2466b09_0- libsqlite=3.49.1=h67fdade_1- libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9- libxml2=2.13.6=he286e8c_0- libzlib=1.3.1=h2466b09_2- mkl=2024.2.2=h66d3029_15- numpy=2.2.3=py310h4987827_0- openssl=3.4.1=ha4e3fda_0- packaging=24.2=pyhd8ed1ab_2- pandas=2.2.3=py310hb4db72f_1- pefile=2023.2.7=pyhd8ed1ab_0- pip=25.0.1=pyh8b19718_0- pyinstaller=6.12.0=py310hba29400_0- pyinstaller-hooks-contrib=2025.1=pyhd8ed1ab_1- python=3.10.16=h37870fc_1_cpython- python-dateutil=2.9.0.post0=pyhff2d567_1- python-tzdata=2025.1=pyhd8ed1ab_0- python_abi=3.10=5_cp310- pywin32=307=py310h9e98ed7_3- pywin32-ctypes=0.2.3=py310h5588dad_1- scikit-learn=1.6.1=py310hf2a6c47_0- scipy=1.15.2=py310h15c175c_0- six=1.17.0=pyhd8ed1ab_0- tbb=2021.13.0=h62715c5_1- threadpoolctl=3.5.0=pyhc1e730c_0- tk=8.6.13=h5226925_1- tzdata=2025a=h78e105d_0- ucrt=10.0.22621.0=h57928b3_1- vc=14.3=h5fd82a7_24- vc14_runtime=14.42.34433=h6356254_24- wheel=0.45.1=pyhd8ed1ab_1- zipp=3.21.0=pyhd8ed1ab_1- pip:- akshare==1.16.14- async-timeout==5.0.1- baostock==0.8.9- beautifulsoup4==4.13.3- blinker==1.9.0- bs4==0.0.2- certifi==2025.1.31- charset-normalizer==3.4.1- click==8.1.8- colorama==0.4.6- cx-freeze==7.2.10- cx-logging==3.2.1- decorator==5.2.1- et-xmlfile==2.0.0- flask==3.1.0- flask-cors==5.0.1- flask-sqlalchemy==3.1.1- greenlet==3.1.1- html5lib==1.1- idna==3.10- itsdangerous==2.2.0- jinja2==3.1.6- jsonpath==0.82.2- lief==0.16.3- lxml==5.3.1- markupsafe==3.0.2- mini-racer==0.12.4- mysql-connector-python==8.0.30- nuitka==2.6.8- openpyxl==3.1.5- ordered-set==4.1.0- pillow==11.1.0- protobuf==3.20.1- pyoxidizer==0.24.0- pypinyin==0.53.0- python-dotenv==1.1.0- pytz==2025.1- redis==5.2.1- requests==2.32.3- setuptools==75.9.1- simplejson==3.20.1- soupsieve==2.6- sqlalchemy==2.0.40- tabulate==0.9.0- tomli==2.2.1- tqdm==4.67.1- tushare==1.4.21- typing-extensions==4.12.2- urllib3==2.3.0- webencodings==0.5.1- websocket-client==1.8.0- werkzeug==3.1.3- xlrd==2.0.1- zstandard==0.23.0
prefix: d:\envs\py310

导入之前,要打开刚才导出的文件,把prefix: d:\envs\py310删除或修改为linux下conda的evns路径,删除就采用默认路径。

除了 prefix 行的问题之外,在 Linux 下导入上述 environment.yml 文件可能还会遇到以下几类问题:

1. 特定于 Windows 的包 在 dependencies 部分,存在一些特定于 Windows 的包,这些包在 Linux 系统上可能无法正常安装或使用,例如: pywin32 和 pywin32-ctypes:这两个包是 Windows 系统下 Python 访问 Windows API 的扩展,在 Linux 系统中没有对应的 Windows API,因此无法使用。 libwinpthread:这是 Windows 系统下的线程库,在 Linux 系统中使用的是不同的线程库(如 pthread),所以这个包在 Linux 上是不适用的。

2. 依赖冲突 由于不同操作系统的环境差异,某些包在 Windows 和 Linux 上的依赖关系可能不同,从而导致依赖冲突。例如,某些包可能依赖于特定版本的系统库,而这些系统库在 Linux 上的版本和可用性可能与 Windows 不同。

3. 编译器和运行时环境 部分包的安装可能依赖于特定的编译器或运行时环境。在 Windows 上安装的包可能是针对 Windows 编译器和运行时环境编译的,在 Linux 上可能需要重新编译,并且需要相应的编译工具链(如 gcc、make 等)。

4. 镜像源问题 虽然文件中使用了清华大学的镜像源,但这些镜像源可能对某些包的支持在不同操作系统上存在差异。另外,某些镜像源可能在 Linux 系统上无法正常访问,导致包下载失败。

5. 路径和文件格式问题 虽然已经处理了 prefix 行,但文件中可能还存在其他与路径相关的配置,这些配置可能在 Windows 和 Linux 之间不兼容。此外,文件的换行符格式(Windows 使用 \r\n,Linux 使用 \n)也可能会对导入过程产生影响,不过大多数现代工具都能自动处理这个问题。

解决方案 移除特定于 Windows 的包:在导入环境之前,手动编辑 environment.yml 文件,移除特定于 Windows 的包。 检查和解决依赖冲突:在安装过程中,如果遇到依赖冲突,Conda 会给出相应的错误信息,可以根据错误信息手动调整依赖版本。

安装必要的编译工具:在 Linux 系统上安装必要的编译工具,如 gcc、make 等,以确保需要编译的包能够正常安装。 测试镜像源:确保使用的镜像源在 Linux 系统上能够正常访问,如果遇到问题,可以尝试切换到其他镜像源。

以下是移除特定于 Windows 包后的 environment.yml 文件示例:

最好的方式是让豆包或deepseek之类的AI按照上面的要求检查一下,再导入。

相关文章:

  • 广东省大模型备案材料之测试题合格率判断标准
  • 【英语语法】词法---数词
  • 论文速报《CAL: 激光雷达中的零样本对象形状补全》
  • Deep Norm
  • spark–sql项目实验
  • 固定资产全生命周期管理:采购至报废的高效管理路径
  • Java第六节:创建线程的其它三种方式(附带源代码)
  • aws文件存储服务——S3介绍使用代码集成
  • JFrog Artifactory 制品库命令行操作指南
  • 模数转换【1】AD7699
  • MySQL知识点讲解
  • 【软件工程】软件测试基础知识
  • MYDB仿MySQL手写数据库项目总结
  • 【Maven】项目管理工具
  • 深度学习-全连接神经网络-2
  • Rust: 从内存地址信息看内存布局
  • 问题 | RAIM + LSTM 你怎么看???
  • Day5-UFS总结
  • WPS科大讯飞定制版 11.4.1.5| 无广告,省电和降低占用,可与普通版本共存
  • stm32week12
  • KZ队史首冠,透过春决看CF电竞张扬的生命力
  • 新任遂宁市委副书记王忠诚已任市政府党组书记
  • 著名电化学家、我国工业电化学奠基人之一郭鹤桐逝世
  • 罗马教皇方济各去世,享年88岁
  • 文旅部:今年中国旅游日活动合作单位扩大至60多家
  • 经济参考报:安全是汽车智能化的终极目标