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 复制代码
表格部分参数解释:
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
显示所有虚拟环境
注意:执行命令时列出了一些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、用户名等信息。
然后点击右侧图标建立连接,并在终端输入密码,然后左侧进入文件目录,就可以愉快地编程啦 。
运行项目
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