跑实验换了几次服务器了,每次遇到相似问题都要重新百度,而且每次百度搜索出的顺序都不一样,又得重新找半天,这次把遇到的问题都总结一下。

1.准备

PuTTY和FileZilla

FileZilla使用FTP传输时,实验室的服务器可能是出于安全考虑,没有开放21端口;想到ssh可以登录,就换SFTP来传输文件(22端口)。

也可以用scp rz sz等等,但我觉得在windows上使用FileZilla的图形界面拖拽就很方便。

2.安装

2.1 Linux软件安装

首先了解下Linux下软件的安装,参考Linux下软件安装的几种方式

2.2 Anaconda

实验室服务器之前已经装了各种版本的python,大家都是各用各的,在自己的目录下使用anaconda,我也不敢随便改/etc/profile(也没权限= =),就也在自己目录下装个anaconda吧。。

安装python我还是第一次用anaconda(之前一直都是pip管理),

参考的 ubuntu16.04下安装&配置anaconda+tensorflow新手教程,看着理解了下anaconda的安装过程,

配置环境变量的配置我只改了我这个用户的,也就是~/.profile,注意把 ~/anaconda/bin放到$PATH前,因为bash中执行python命令时会按PATH中的顺序进行搜索。

我的配置:

#umask 

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi # set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi # ADD_PATH="$(pwd)"
export PATH="$HOME/anaconda3/bin:$PATH"
# export PATH="${ADD_PATH}:${PATH}"
export GUROBI_HOME="$HOME/tars/gurobi811/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"
export GRB_LICENCE_FILE="$HOME/gurobi.lic"

安装完后自己理解了下anaconda对python packages的管理

(base) tandaojun1@node32:~$ python3
Python 3.7. (default, Mar , ::)
[GCC 7.3.] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.path)
['', '/home/tandaojun1/anaconda3/lib/python37.zip', '/home/tandaojun1/anaconda3/lib/python3.7', '/home/tandaojun1/anaconda3/lib/python3.7/lib-dynload', '/home/tandaojun1/anaconda3/lib/python3.7/site-packages']

所以,之后用conda install tensorflow下载的第三方包应该是会装到/home/tandaojun1/anaconda3/lib/python3.7/site-packages目录下

bash前面的(base)是conda的虚拟环境,conda activate base进入的是默认虚拟环境,base换成自己的环境,前面就当前环境的环境名。

另外,conda的虚拟环境执行bash确实有点延迟,,

2.3 Gurobi

这个是我的程序需要的一个求解器,第三方包,conda没有,需要自己安装

首先求解器的安装是从官网wget下载tar.gz文件,然后tar -vxfz gurobi811.tar.gz解压,目前只是得到了求解器

在~/.profile中添加gurobi相关的环境变量(PATH和LD_LIBRARY_PATH),然后grbgetkey获取licence,再在~/.profile中添加GRB_LICENCE_FILE环境变量

目前求解器可以求解了,但python还没有安装packages,进入到~/gurobi811/linux64/路径下

python setup.py install

可以自己看下setup.py代码是怎么写的,以后也会用到。

3.安装测试

其实上面已经测试了= =,不过可以再记下确认用的是哪个版本(哪个路径下的sh)的python (也可以用type python)

(base) tandaojun1@node32:~$ which python
/home/tandaojun1/anaconda3/bin/python

要查看系统中有哪些python:

(base) tandaojun1@node32:~$ whereis python
python: /usr/bin/python3. /usr/bin/python3.4m-config /usr/bin/python3.-config /usr/bin/python3.4m /usr/bin/python2. /usr/bin/python2.-config /usr/bin/python /etc/python3. /etc/python2. /etc/python /usr/lib/python3. /usr/lib/python2. /usr/bin/X11/python3. /usr/bin/X11/python3.4m-config /usr/bin/X11/python3.-config /usr/bin/X11/python3.4m /usr/bin/X11/python2. /usr/bin/X11/python2.-config /usr/bin/X11/python /usr/local/lib/python3. /usr/local/lib/python2. /usr/include/python3. /usr/include/python3.4m /usr/include/python2. /usr/share/python /usr/share/man/man1/python..gz

4.运行

4.1 命令行python脚本传参

首先了解下命令行中怎么在执行python文件时传入参数,可以参考  命令行运行Python脚本时传入参数的三种方式

4.2 python import model

其次是理解下python的import机制,因为windows下pycharm会帮你把sys.path(上面演示的)等给你预置好了,直接执行就可以,但在命令行中执行会遇到ModuleNotFoundError。

我看的关于Python的import机制原理,主要是知道python从哪import models。

明白了这个,接下来就是怎么让python找到自己写的models。

一种方法是在.py文件中使用sys.path.append()来添加,可以参考https://blog.csdn.net/qq_43355223/article/details/87340858https://www.cnblogs.com/bob-jianfeng/p/10274034.html

使用绝对路径显然不适用于经常换平台执行,但使用相对路径得确保要执行的文件与项目根目录之间的相对关系不变,我这代码还在测试阶段,可能会经常变动= =,所以想在命令行直接将项目根目录添加到python找models的列表中。

一开始以为是PATH变量,尝试将项目目录添加到PATH变量中,发现还是会报错,之后百度了才知道,,,是PYTHONPATH

可以在~/.profile中添加(记得 source ~/.profile),也可以命令行执行(每次重新开启终端都要执行)

export PYTHONPATH=~/projects/vnf_flow:$PYTHONPATH

4.3 后台运行

由于我要跑多个实验,每个实验都要输出一些结果,所以需要进程后台运行,

screen就很不错,可以参考Linux后台运行任务

服务器(Linux)上运行python总结的更多相关文章

  1. 【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下 ...

  2. Linux04 /创建虚拟环境、在linux环境运行Python项目

    Linux04 /创建虚拟环境.在linux环境运行Python项目 目录 Linux04 /创建虚拟环境.在linux环境运行Python项目 1. 大体流程 2. linux环境安装python3 ...

  3. 在Linux上运行C#

    众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x.ME.NT.2000.XP和Win CE之类的操作系统.但是,现在却有了一个叫做Mono的项目,它的目 ...

  4. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  5. 开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs

    原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...

  6. 让Qt在MIPS Linux上运行 good

    下载 首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载.考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么 ...

  7. 【Azure 应用服务】Azure App Service For Linux 上实现 Python Flask Web Socket 项目 Http/Https

    问题描述 在上篇博文"[Azure 应用服务]App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)"中,实现了通过 HT ...

  8. 不装mono,你的.NET程序照样可以在Linux上运行!

    让.NET应用程序在linux上运行,目前通用的做法就是在Linux上安装mono,然后通过”mono your.exe“命令运行这个程序. 这种运行.net程序的办法有两个弱点,一个是需要客户机安装 ...

  9. Wine——在Linux上运行Windows软件

    官网:https://www.winehq.org/ 参考: wikipedia 教你使用Wine在Linux上运行Windows软件 如何安装和使用Wine,以便在Linux上运行Windows应用 ...

随机推荐

  1. Java虚拟机(五):JVM 类加载机制

    一.JVM 类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程. 1. 加载: 加载是类加载过程中的第一个阶段,这个阶段会在内存中生成一个代表 ...

  2. java,单文件和多文件上传代码范例

    上传一个单文件,用request.getFile得到文件(下面的功能是上传到阿里云) @RequestMapping(value = {"/content"}, method = ...

  3. 浅谈sqoop

    1.sqoop的概述a.sqoop 是一款工具,是appche 旗下的一款工具,主要是负责 hadoop与RDBMS之间的数据迁移,即从hadoop 文件系统 导出数据到RDBMS,从RDBMS导入数 ...

  4. Keras Conv1d 参数及输入输出详解

    Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True) filter ...

  5. CentOS6和7启动流程

    CentOS6启动流程 https://linux.cn/article-8807-1.html BIOS 开机自检,硬件自检 MBR MBR磁盘分区是一种使用最为广泛的分区结构,它也被称为DOS分区 ...

  6. 用js刷剑指offer(从上到下打印二叉树)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 牛客网链接 js代码 /* function TreeNode(x) { this.val = x; this.left = null ...

  7. P2921 [USACO08DEC]在农场万圣节[SCC缩点]

    题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ...

  8. P1417 烹调方案[背包]

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  9. TCP服务端实现并发

    socket 在 tcp 协议下通信 客户端 import socket ​ # 创建客户端TCP协议通信 c = socket.socket() # 与指定服务端握手 c.connect(('127 ...

  10. ubuntu下新立得(synaptic)软件包管理器安装

    1.从ubuntu下的软件中心(面板主页中输入soft即可找到)搜索安装synaptic后,打开新立得一闪就自动关了.解决办法为: 1.1命令行下卸载,命令行下重新安装: 卸载: #purge表示卸载 ...