阅读 481

Linux服务器从0开始运行python项目(linux服务器跑python程序)

从学校实验室白嫖了个服务器账号,记录下配置环境以及训练模型等操作的步骤。

备注:受篇幅限制,本文在使用具体命令时仅介绍其基础用法,具体可参考附录链接。

查看服务器基础信息

Linux版本信息

# 查看linux发型版本 cat /etc/centos-release # 查看操作系统架构,输出 x86_64 则表示为 64 位系统,输出 i686 或 i386 则表示为 32 位系统 arch 复制代码

笔者发行系统为CentOS 7.7版本,64位系统。

GPU信息

# 查看GPU状态信息 nvidia-smi 复制代码

image.png

表格部分参数解释:

  • GPU: 本机中的GPU编号(有多块显卡的时候,从0开始编号)

  • Perf: GPU的性能状态,从P0(最大性能)到P12(最小性能)

  • Persistence-M: 持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时花费的时间更少,图上显示的是:off

配置conda环境

1. 下载linux安装包(.sh文件)

Anaconda官网-->Download Site-->Anaconda3-2019.03-Linux-x86_64.sh

2. 安装Anaconda3

bash Anaconda3-2019.03-Linux-x86_64.sh 复制代码

3. 添加安装目录下的bin目录到当前用户环境变量文件(~/.bash_profile)中

在profile文件末尾加入一行:export PATH=/你的安装目录/anaconda3/bin:$PATH

使用source ~/.bash_profile让配置生效。

若在终端前出现了(base),即表示conda已经安装成功并进入conda中名为base的虚拟环境。 要退出conda环境,使用命令conda deactivate,则可关闭(base)提示。

使用conda env list显示所有虚拟环境 image.png

注意:执行命令时列出了一些WARNING,此处代表某些文件在新版本中被移除,这里使用conda update -n base conda命令更新conda版本,即可解决这个问题。

5. 创新环境并配置

先创建环境conda create –n 环境名,再使用conda activate 环境名进入环境。

注意:推荐以不指定python版本的方式创建环境,如conda create -n myenv python=3.6。只有不指定版本时,创建的环境会与主环境完全共享,使用pip安装时也只会安装在主环境。只有在成功使用conda install something后,这个环境才独立出来。参考 官方文档

配置项目环境

1. 使用ssh或sftp上传项目代码

参考 XShell上传文件到Linux服务器上 - Desperado_nbf - 博客园 (cnblogs.com)

2. 进入代码文件夹,配置环境

使用pip install -r requirements.txt安装项目需要的包。

也可以使用conda install --yes --file requirements.txt 来安装。

若项目中无requirements.txt文件,可边运行项目边检查错误信息,逐步安装依赖文件。

【可选】在使用pip安装项目依赖时,可先升级并更改pip源

# 升级pip版本(可选) python -m pip install --upgrade pip  # 更改pip源为清华源(可选) mkdir ~/.pip vi ~/.pip/pip.conf # ===> 添加下面的内容 [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host = https://pypi.tuna.tsinghua.edu.cn # ===> 然后保存并退出,以后使用pip install时,就可以享受正常网速了 复制代码

3. 使用VSCode远程编辑服务器代码

先安装Remote-SSH插件,点击设置并打开配置文件,在配置文件中键入服务器名称、ip、用户名等信息。 image.png

然后点击右侧图标建立连接,并在终端输入密码,然后左侧进入文件目录,就可以愉快地编程啦 。 image.png

运行项目

1. 测试项目是否正常运行

在运行项目时,笔者遇到了这样一个问题

 File "~/MyCode/RecursiveSeparation/uPIT_2spk/trainer.py", line 16, in <module>    import matplotlib.pyplot as plt  File "~/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 32, in <module>    import matplotlib.colorbar ImportError: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ~/anaconda3/lib/python3.7/site-packages/matplotlib/_path.cpython-37m-x86_64-linux-gnu.so) 复制代码

最简单的解决办法如下

$ vim  ~/.bash_profile  # 将下面两行命令写进文件 LD_LIBRARY_PATH=~/anaconda3/lib:$LD_LIBRARY_PATH      export LD_LIBRARY_PATH $ source  ~/.bash_profile 复制代码

2. 启用守护进程

nohup python train.py & 复制代码

nohup命令对train.py进程做了三件事:

  • 阻止SIGHUP信号发到这个进程;

  • 关闭标准输入。该进程不再能够接收任何输入,即使运行在前台;

  • 重定向标准输出和标准错误到当前目录下的nohup.out文件。

也就是说,nohup命令实际上将子进程与它所在的 session 分离了。

注意,nohup命令不会自动把进程变为"后台任务",所以必须加上&符号。

至此,本篇博文结束。这是我在掘金的第一篇博客,如有纰漏欢迎评论区交流。


作者:阔天祁
链接:https://juejin.cn/post/7043055926051340325

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐