服务器环境配置(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.创建环境 

源码

tommy-qichang/DSL_All_Code: Official implementation of paper "Mining Multi-Center Heterogeneous Medical Data with Distributed Synthetic Learning" (github.com)

Collecting package metadata (current_repodata.json): failed

conda报错:Collecting package metadata (current_repodata.json): failed - 知乎 (zhihu.com)

 再来一次,okkk

 还可以参考这个,如果还没成功

solving environment: failed with repodata from current_repodata.json, will retry with next repodata-CSDN博客

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 install安装python库失败:PackagesNotFoundError: The following packages are not available from curren-CSDN博客

conda config --add channels conda-forge

Python版本不匹配导致创建环境失败

让GPT4分析了requirements.txt之后,想起来我的anaconda3安装的是3.7.5版本的python

而这个论文的源码的python环境是3.6,所以我问了gpt应该怎么办

此requirements.txt文件列出了一个Python环境的依赖包及其版本,用于创建具有特定库的虚拟环境。在尝试创建或使用该环境时,可能会遇到几个潜在的问题:

  1. Python版本限制:指定的Python版本是3.6.12,这是一个较旧的版本。随着时间的推移,一些列出的包可能不再支持这个Python版本,或者已经有了针对新版本Python的更好支持和功能。

  2. 包版本兼容性:文件列出了特定版本的包,这些包之间可能存在兼容性问题。虽然大多数情况下,包版本是经过选择的,以确保它们能够一起工作,但随着时间的推移,这种兼容性可能会改变,尤其是当引入新版本时。

  3. 过时的包:某些包可能已经过时或不再维护。使用过时的包可能会导致安全风险和性能问题。

  4. 操作系统兼容性:虽然文件指明了platform: linux-64,但并不是所有列出的包和依赖都能保证在所有Linux发行版或版本上以相同的方式工作。特定的系统库版本差异可能会影响某些包的编译和运行。

  5. 直接从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的仓库中可用。

处理步骤

  1. 为conda创建一个列表:查看你的包,将那些你知道或认为可以通过conda安装的包列出来,去除=pypi_0等后缀。尽量使用conda安装,因为conda会处理好包之间的依赖关系。

  2. 为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.txtpip_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"

如何运行这个脚本

  1. 确保你已将此脚本保存为split_packages.sh,并放在与你的requirements.txt相同的目录中。
  2. 打开终端,使用chmod +x split_packages.sh命令给予执行权限。
  3. 运行脚本并传入你的requirements.txt文件作为参数:

    ./split_packages.sh requirements.txt

这将生成两个文件:conda_requirements.txtpip_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

参考

  但还是炸了,为什么!!!

 

posted @ 2024-04-03 17:12  asandstar  阅读(264)  评论(0编辑  收藏  举报