type
status
date
slug
summary
tags
category
icon
password
工作未开始,工作室电脑一个环境,个人笔记本上一个环境,远程机器还需一个环境,你需要一个保持环境相同,小白必看!
📝 主旨内容
背景
分布式机器学习(多机)或者代码协同,都需要保持环境的相同,要不然会导致一系列的坑……博主是第一次尝试多机多卡进行机器学习,在这里也卡了一会,需要在另一张有3090的机器上进行分布式训练,但是训练前,需要保持两台机器的环境相同(包括torch、python、pip以及scipy等一系列的包)这个问题可以有一下两种解决方案
一、conda
使用conda方法前,你需要两台机器上都安装了conda(推荐Miniconda),原始环境上使用Conda配置好了环境,并且安装了所有所需的python依赖以及Pytorch,你希望将相同的环境快速复制到另一台机器上,可以通过以下步骤实现:
不过请注意:两台机器的系统需要相同!!!我在这就踩了个坑
1.导出环境
在原始机器上,首先激活你想要导出的环境,然后使用
conda env export
命令导出环境到一个YAML文件中。例如,如果你的环境名为myenv
,可以这样做:这将创建一个名为
environment.yml
的文件,里面包含了环境中所有安装的包及其版本号。2.复制环境文件
将生成的
environment.yml
文件从原始机器复制到新机器上。你可以使用scp
(安全复制)命令,或者如果两台机器不方便直接连接,可以先复制到一个中间设备(如USB驱动器或通过电子邮件)。使用
scp
的命令示例:还可以指定端口
3.在新机器上创建环境
在目标机器上,使用
conda env create
命令从environment.yml
文件创建环境:这个命令会读取YAML文件,并尝试在新机器上创建一个与原始机器相同的环境,包括安装所有列出的包及其依赖。你可以使用
vim
来读取YAML文件,应该是以下的格式(如果你的后缀名不是YAML,这有可能传输过程中被错误的重命名了,不要惊慌,将其重命名为environment.yml,再执行第三步即可)
但是到这里,我的操作就终止了,出现了以下报错
这个报错是由于平台不匹配造成的,
environment.yml
文件可能是在不同的操作系统(例如Windows)上生成的,而你正在尝试在Linux上创建环境。某些包的版本可能是特定于平台的。我也没有找到特别好的解决方案,只能不了了之,使用第二种方案,如果你没有这个问题,请执行第四步4.激活新环境
环境创建完成后,使用
conda activate
命令激活新环境:二、编写requirement.txt
列一个requirement.txt文件,然后发送给另一台机器,以供其进行安装,具有以下步骤:
1.生成完整的依赖列表
再你当前的环境中,可以通过
pip freeze
命令列出所有已安装的包及其版本:2.筛选依赖
然后,你可以手动编辑
requirements_all.txt
文件,删除那些明显属于Python标准库的包,或者是你知道不需要在目标环境中安装的包。对于自动化筛选,尽管直接识别和排除标准库的包不是非常直观,但你可以专注于移除那些常见的、通常随Python环境自带的包,如
pip
、setuptools
等。这个步骤可能需要你对环境中用到的包有一定了解,以判断哪些是必需的,哪些是可选的或者是自带的。
或者,你可以让gpt帮你完成这部分的工作
3.简化requirements.txt
:
如果你的项目有
setup.py
文件,或者你确切知道哪些包是项目运行必需的,直接手动编写requirements.txt
可能更为简洁有效。4.在另一台机器上安装依赖
- 将
requirements.txt
文件传输到目标机器: 使用之前提到的scp
命令,如果已经有了requirements.txt
文件:
scp -P 100 requirements.txt username@target_machine_ip:/path/to/target/directory
- 在目标机器上安装依赖:
首先,确保你已经在目标机器上激活了目标Python环境。然后,使用
pip
根据requirements.txt
文件安装依赖:
这将会安装
requirements.txt
中列出的所有包及其依赖。🤗 注意事项
- 当通过
pip freeze
生成的依赖列表时,可能会包含一些特定项目不直接依赖的包。这是因为一些包可能会作为其他包的依赖被安装。
- 在另一台机器上安装依赖时,确保目标环境与源环境尽可能相似,特别是Python版本和操作系统,以避免兼容性问题。
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
- Author:Zachary_Yang
- URL:https://notion-next-git-main-little1ds-projects.vercel.app//article/python-env-shared
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!