服务器(Linux)上运行python总结

跑实验换了几回服务器了,每次遇到类似问题都要从新百度,并且每次百度搜索出的顺序都不同,又得从新找半天,此次把遇到的问题都总结一下。html

1.准备

PuTTY和FileZillanode

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

也能够用scp rz sz等等,但我以为在windows上使用FileZilla的图形界面拖拽就很方便。linux

2.安装

2.1 Linux软件安装

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

2.2 Anaconda

实验室服务器以前已经装了各类版本的python,你们都是各用各的,在本身的目录下使用anaconda,我也不敢随便改/etc/profile(也没权限= =),就也在本身目录下装个anaconda吧。。windows

安装python我仍是第一次用anaconda(以前一直都是pip管理),安全

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

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

个人配置:app

#umask 022 # 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.3 (default, Mar 27 2019, 22:11:17) [GCC 7.3.0] :: 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.4 /usr/bin/python3.4m-config /usr/bin/python3.4-config /usr/bin/python3.4m /usr/bin/python2.7 /usr/bin/python2.7-config /usr/bin/python /etc/python3.4 /etc/python2.7 /etc/python /usr/lib/python3.4 /usr/lib/python2.7 /usr/bin/X11/python3.4 /usr/bin/X11/python3.4m-config /usr/bin/X11/python3.4-config /usr/bin/X11/python3.4m /usr/bin/X11/python2.7 /usr/bin/X11/python2.7-config /usr/bin/X11/python /usr/local/lib/python3.4 /usr/local/lib/python2.7 /usr/include/python3.4 /usr/include/python3.4m /usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.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后台运行任务

相关文章
相关标签/搜索