服务器环境配置(MobaXterm+pycharm)+复现深度学习实验记录+bomb lab
服务器环境配置
1.下载MobaXterm
MobaXterm(终端工具)下载&安装&使用教程-CSDN博客
2.连接远程服务器+下载anaconda
使用MobaXterm连接服务器并利用Anaconda进行安装pytoch框架跑深度学习模型(使用学校服务器+显卡进行深度学习)_mobaxerm跑代码-CSDN博客
远程服务器上安装Anaconda并创建python环境、安装pytorch(Linux)_欧拉安装anaconda-CSDN博客
3.403问题解决
使用wget报错403_wget error 403: forbidden.-CSDN博客
4.换源加快下载速度
Linux服务器安装anaconda、虚拟环境配置、换源、清华镜像-CSDN博客
5.用MobaXterm、Pycharm配置连接远程服务器
使用Xshell、MobaXterm、Pycharm配置连接远程服务器_使用xshell+xmanager+pycharm搭建pytorch远程调试开发环境-CSDN博客
【本地pycharm远程连接服务器教程】以mobaxterm为例_pycharm l连接mobaxterm-CSDN博客
上传成功
复现深度学习实验
6.创建环境
源码
Collecting package metadata (current_repodata.json): failed
conda报错:Collecting package metadata (current_repodata.json): failed - 知乎 (zhihu.com)
再来一次,okkk
还可以参考这个,如果还没成功
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
conda update -n base conda
按上面换了源还总是出错
PackagesNotFoundError
conda create --name feddgan --file requirements.txt
conda activate feddgan
conda config --add channels conda-forge
Python版本不匹配导致创建环境失败
让GPT4分析了requirements.txt之后,想起来我的anaconda3安装的是3.7.5版本的python
而这个论文的源码的python环境是3.6,所以我问了gpt应该怎么办
此requirements.txt文件列出了一个Python环境的依赖包及其版本,用于创建具有特定库的虚拟环境。在尝试创建或使用该环境时,可能会遇到几个潜在的问题:
-
Python版本限制:指定的Python版本是3.6.12,这是一个较旧的版本。随着时间的推移,一些列出的包可能不再支持这个Python版本,或者已经有了针对新版本Python的更好支持和功能。
-
包版本兼容性:文件列出了特定版本的包,这些包之间可能存在兼容性问题。虽然大多数情况下,包版本是经过选择的,以确保它们能够一起工作,但随着时间的推移,这种兼容性可能会改变,尤其是当引入新版本时。
-
过时的包:某些包可能已经过时或不再维护。使用过时的包可能会导致安全风险和性能问题。
-
操作系统兼容性:虽然文件指明了
platform: linux-64
,但并不是所有列出的包和依赖都能保证在所有Linux发行版或版本上以相同的方式工作。特定的系统库版本差异可能会影响某些包的编译和运行。 -
直接从pypi安装:文件中包含了一些使用
pypi_0
标记的包,这意味着它们将直接从PyPI安装,而不是使用conda的包管理。这可能导致依赖性管理问题,因为conda环境是为了处理复杂的库依赖关系和环境隔离而设计的。
解决这些问题的策略可能包括:
- 更新Python版本:考虑升级到较新的Python版本,例如Python 3.8或3.9,这样可以使用更多的包和功能。
- 测试包版本兼容性:在创建环境之前,可以在一个隔离的环境中测试包版本之间的兼容性,以确保一切顺利。
- 检查包的活跃度和安全性:对于那些可能已经过时的包,寻找替代品或检查是否有维护更新是一个好主意。
- 考虑使用Docker或其他容器技术:如果需要确保环境在不同系统上的一致性,使用Docker或其他容器技术可能是一个解决方案,因为它们可以封装应用程序和其环境。
如果在尝试使用Anaconda安装这个requirements.txt
文件时遇到失败,并且您的Anaconda安装使用的是Python 3.7.5,那么问题可能确实与Python版本有关。这个requirements.txt
文件指定了Python 3.6.12,可能包含一些仅与这个或更低版本兼容的包。此外,一些列出的包版本可能不支持Python 3.7.5,或者在Python 3.7.5环境下存在依赖性冲突。
解决策略
1. 创建一个新的Conda环境并指定Python版本
您可以创建一个新的Conda环境,并在其中指定Python 3.6版本,以尝试避免版本兼容性问题。这样做可以让您在不更改主系统Python版本的情况下,针对特定项目使用不同的Python版本。使用以下命令创建一个新的Conda环境:
conda create --name myenv python=3.6
其中,myenv
是您希望给新环境命名的名称。创建环境后,激活该环境:
conda activate myenv
然后,尝试再次安装requirements.txt
中列出的包。
2. 更新requirements.txt
文件以适应Python 3.7
如果可能的话,您可以尝试更新requirements.txt
中的包版本,使其与Python 3.7.5兼容。这可能需要一些研究工作,以确定每个包的兼容版本,并更新文件中的相应条目。
3. 手动安装失败的包
如果在安装过程中只有少数几个包失败,您可以尝试手动安装这些包,并查找可能的替代版本或替代包。使用conda search <package_name>
命令可以帮助您查找可用的包版本。
4. 使用虚拟环境
确保您在创建的新环境中工作,这样可以避免对系统级别的Python环境造成潜在的影响。使用虚拟环境,您可以自由地安装、升级和删除包,而不会影响到其他项目或系统级别的设置。
5. 考虑升级Anaconda
如果您频繁遇到包版本问题,也可以考虑升级Anaconda到最新版本,这可能会提供更好的包管理和兼容性支持。
XXX is not in the sudoers file. This incident will be reported.
我想用sudo gedit ~/.bashrc,看起来是管理员怕我们把系统搞坏所以没给root,那么正常用gedit ~/.bashrc也可以编辑环境变量
在文件末尾输入export PATH="/home/你的用户名/anaconda3/bin:$PATH"
保存并退出。
然后,在终端输入source ~/.bashrc
再次输入conda list
在终端执行以下命名,就可以更改镜像源,
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
这里设置的镜像源为清华源
8.终极换源!!!
Conda 替换镜像源方法尽头,再也不用到处搜镜像源地址_conda换源-CSDN博客
但这个换源似乎不能解决问题
9.requirements.txt中conda和pip混用
我问gpt怎么解决,它说创建environment.yml然后
conda env create -f environment.yml
激活用
conda activate myenv
要将你提供的包列表转换为 environment.yml 格式并正确安装,我们首先需要区分哪些包是通过 Conda 安装的,哪些包是通过 pip 安装的。由于你提供的列表中包含了特定于 pip (pypi_0 标记) 和 Conda 的包,我们将在 environment.yml 文件中明确指定这些区别。
以下是一个示例 environment.yml 文件,它基于你提供的信息。注意,这个文件假设所有没有 pypi_0 标记的包都将通过 Conda 安装,而标记为 pypi_0 的包将通过 pip 安装。
environment.yml像这样分开pip和conda
name: myenv
channels:
- conda-forge
- defaults
dependencies:
- python=3.8
- pip
- pip:
- visdom>=0.1.8.3
- torch>=0.4.1
- dominate>=2.3.1
我猜现在剩下的问题就是absl-py==0.11.0没安装了,其他都安装好了(包括分离pip和conda)
environment.yml失效,编写脚本自动区分conda和pip
我的requirements.txt的格式是这样的
……
vine=1.3.0=pypi_0
visdom=0.1.8.9=pypi_0
voxelmorph=0.1=pypi_0
vtk=9.0.1=pypi_0
wandb=0.10.23=pypi_0
wcwidth=0.1.7=pypi_0
webencodings=0.5.1=pypi_0
websocket-client=0.57.0=pypi_0
werkzeug=1.0.1=pypi_0
wheel=0.35.1=py_0
widgetsnbextension=3.5.1=pypi_0
wrapt=1.12.1=pypi_0
xerces-c=3.2.2=hea5cb30_1003
xorg-imake=1.0.7=0
xorg-kbproto=1.0.7=h14c3975_1002
xorg-libice=1.0.10=h516909a_0
xorg-libsm=1.2.3=h84519dc_1000
xorg-libx11=1.6.12=h36c2ea0_0
xorg-libxaw=1.0.13=h516909a_1002
xorg-libxext=1.3.4=h516909a_0
xorg-libxmu=1.1.3=h516909a_0
xorg-libxpm=3.5.13=h516909a_0
xorg-libxrender=0.9.10=h516909a_1002
xorg-libxt=1.1.5=h516909a_1003
xorg-makedepend=1.0.6=he1b5a44_1
xorg-renderproto=0.11.1=h14c3975_1002
xorg-xextproto=7.3.0=h14c3975_1002
xorg-xproto=7.0.31=h14c3975_1007
xz=5.2.5=h7b6447c_0
yarl=1.6.3=py36h1d69622_0
……
共360+条
看起来你的requirements.txt
文件中的格式不是标准的pip格式,而且包含了一些可能是conda特定的标识,比如=pypi_0
和特定的构建字符串。这样的格式直接用于pip可能会导致错误,因为pip不会理解这些额外的标识。对于conda,这种格式也可能不是最优的,因为它似乎指向了特定的构建,这可能不是conda搜索和安装包时的标准做法。
为了处理这种格式的requirements.txt
,最好的方法可能是手动编辑文件,将其分成两个不同的列表:一个用于conda安装的包(去掉了=pypi_0
等标识),另一个用于pip安装的包。对于上面列出的包,大多数pypi_0
标签意味着这些包是通过pip来安装的,但是实际上很多包同时也在conda的仓库中可用。
处理步骤
-
为conda创建一个列表:查看你的包,将那些你知道或认为可以通过conda安装的包列出来,去除
=pypi_0
等后缀。尽量使用conda安装,因为conda会处理好包之间的依赖关系。 -
为pip创建一个列表:将剩下的包(特别是那些只能通过pip安装的)列入另一个列表。
例子
基于你的列表,下面是一种可能的处理方式:
conda安装的包(conda_requirements.txt
):
xerces-c=3.2.2 xorg-imake=1.0.7 xorg-kbproto=1.0.7 xorg-libice=1.0.10 xorg-libsm=1.2.3 xorg-libx11=1.6.12 xorg-libxaw=1.0.13 xorg-libxext=1.3.4 xorg-libxmu=1.1.3 xorg-libxpm=3.5.13 xorg-libxrender=0.9.10 xorg-libxt=1.1.5 xorg-makedepend=1.0.6 xorg-renderproto=0.11.1 xorg-xextproto=7.3.0 xorg-xproto=7.0.31 xz=5.2.5
pip安装的包(pip_requirements.txt
):
vine==1.3.0 visdom==0.1.8.9 voxelmorph==0.1 vtk==9.0.1 wandb==0.10.23 wcwidth==0.1.7 webencodings==0.5.1 websocket-client==0.57.0 werkzeug==1.0.1 wheel==0.35.1 widgetsnbextension==3.5.1 wrapt==1.12.1 yarl==1.6.3
请注意,我在这里假设xorg-*
和xz
等包可以通过conda安装,而其他标记为pypi_0
的包使用pip安装。你需要根据实际情况调整这些列表。
接下来,你可以使用conda install --file conda_requirements.txt
来安装conda的包,然后使用pip install -r pip_requirements.txt
来安装pip的包。
我将提供一个脚本示例,它将尝试自动处理你的requirements.txt
文件,将其分为两个文件:conda_requirements.txt
和pip_requirements.txt
。脚本将尝试简单地根据包名后缀(如pypi_0
)来区分应该使用pip还是conda安装。
这个脚本不会完美无误,因为它基于一些假设(比如所有标记为pypi_0
的包都应该用pip安装),但它应该能作为一个好的起点。你可能需要检查输出文件并手动调整。
脚本示例
保存下面的脚本为split_packages.sh
:
#!/bin/bash # 检查输入文件 if [ "$#" -ne 1 ]; then echo "Usage: $0 requirements.txt" exit 1 fi input_file=$1 # 创建输出文件,覆盖任何已存在的文件 conda_file="conda_requirements.txt" pip_file="pip_requirements.txt" echo "" > "$conda_file" echo "" > "$pip_file" # 读取每一行,在适当的文件中添加条目 while IFS= read -r line || [ -n "$line" ]; do if [[ "$line" == *=pypi_0* ]]; then # 对于pip包,去掉`=pypi_0`后缀,改为`==` cleaned_line=$(echo "$line" | sed 's/=\(.*\)=pypi_0/==\1/') echo "$cleaned_line" >> "$pip_file" else # 对于conda包,保持原样 echo "$line" >> "$conda_file" fi done < "$input_file" echo "Conda requirements written to $conda_file" echo "Pip requirements written to $pip_file"
如何运行这个脚本
- 确保你已将此脚本保存为
split_packages.sh
,并放在与你的requirements.txt
相同的目录中。 - 打开终端,使用
chmod +x split_packages.sh
命令给予执行权限。 - 运行脚本并传入你的
requirements.txt
文件作为参数:
./split_packages.sh requirements.txt
这将生成两个文件:conda_requirements.txt
和pip_requirements.txt
,分别含有为conda和pip准备的包。
请记住,由于这个方法基于一些简单的文本替换和假设,生成的文件可能需要你手动审查和调整。尤其是在某些包可能既存在于conda中也存在于PyPI中的情况下,选择最适合你项目的安装源是很重要的。
剩下的是根据报错手动处理版本兼容问题
注释过去的版本号,在下面新加版本号
解决pycocotools安装错误——好吧,经过我和GPT都没办法解决,先skip吧
安装cuda
由于英伟达的下载网页发生改变,服务器又没被授予sudoer权限,因此上传之后sudo dpkg不能解压,所以从其他同学的home里拿出旧的run包运行去了
【CUDA】Ubuntu系统如何安装CUDA保姆级教程(2022年最新)_ubuntu安装cuda-CSDN博客
哎呀
非root又不给权限安装驱动……
下面这个可以正常安装呢
包括cuda的toolkit
复现语音情感识别的深度学习项目 2024-4-26
yeyupiaoling/SpeechEmotionRecognition-Pytorch: 基于Pytorch实现的语音情感识别 (github.com)
bomb lab
助教应该修改了内容,但是还是可以参考
手把手教你拆解 CSAPP 的 炸弹实验室 BombLab - 知乎 (zhihu.com)
这里是%rsp减去0x8了,开辟8字节栈空间
炸了捏,换一个教程试试看
【CSAPP】探究BombLab奥秘:Phase_3的解密与实战_bomb lab phase3-CSDN博客
啊啊啊还是炸了,为什么呢 难道不是1 0,或者2 0 或者其他为0
参考
但还是炸了,为什么!!!