Python程序(含配置参数)在Linux服务器终端运行方法及问题解决
解决python文件在终端运行时无法导入第三方库或其他包的问题
Python程序(含配置参数)在Linux服务器终端运行方法及问题解决
使用环境
- 本地Pycharm编辑器中打开的py主程序
- 远程服务器中的虚拟环境、工程文件
- 运行py文件:①在Pycharm中直接运行 ②在Pycharm的ssh终端运行 ③使用终端工具在terminus中运行(可避免本地与服务器断连时程序被终端)
①在Pycharm中直接运行通过
py主程序所在的工程项目中有多个文件和文件夹,且py主程序import了第三方库和多个py文件,可以正常运行。当运行程序时间较长时,偶尔会遇到服务器断连的情况,此时pycharm中的程序就中断了,只能重连后从头开始运行。。。
(之前就一直想实现在终端运行程序,但因为当时没搞懂方法没跑通就被搁置了,这次终于跌跌撞撞的实现了,特此记录以供参考)
②在Pycharm的ssh终端运行
首先需要打开ssh终端,并选择远程服务器,如下图:
如果之前从来没有在这里打开过,可能点击箭头后出来的列表里没有上述服务器地址(不确定是否这样,我第一次在pycharm中打开终端时是在下图位置)可以按照下图方法打开:工具——启动SSH会话…
打开后默认进入的是base环境,此时也可以直接运行py文件,但如果在pycharm中运行时使用的是虚拟环境,很多第三方库也安装在了虚拟环境中,这样py文件就会报错:ModuleNotFoundError: No module named ‘xxx‘,已经有很多教程在解决这个问题了,其中的一个原因就是没有真正进入到应该运行此py文件的环境中
使用指令 conda info --envs
查看已安装的环境,进入可以运行py程序的环境 (这一步也进行了很久,一开始以为直接cd进入到python文件夹位置就可以了,结果不对,后来误打误撞使用了activate命令才发现可以查看已经有的环境,后来activate命令使用不对又没进入环境,最后才写对了指令太菜啦),如下图,由base环境进入了pytorch环境
接下来就可以运行程序了
如果运行主程序还有更多要求,请看以下情况
情况一:如果在主程序中import了其他py文件,还需要在主程序中导入工程目录
import os
import sys
sys.path.append(os.path.dirname("工程的根目录")) # 保证在终端运行时,可以被检索到目录
情况二:如果主程序需要额外配置参数
此时在终端执行python时直接空格添加参数即可,参数名和参数直接是空格,多个参数之间也是空格注意不要打上换行键 /,否则识别到换行键就会认为要执行运行了
③在终端工具terminus中运行,断连后程序仍可继续运行
借助Linux命令:screen
- 创建screen窗口
screen -S '自定义窗口的名字'
- 进入窗口后,按照在pycharm的ssh终端运行方法的步骤,从base环境进入pytorch环境中运行即可,方法相同,此时即使本地断连了服务器也可以保持程序继续运行
- 之后就是screen指令操作了,
screen -ls
:查看当前有哪些会话以及它们各自的状态
更多推荐
所有评论(0)