服务器(Linux)上运⾏python总结
跑实验换了⼏次服务器了,每次遇到相似问题都要重新百度,⽽且每次百度搜索出的顺序都不⼀样,⼜得重新半天,这次把遇到的问题都总结⼀下。
1.准备
服务器PuTTY和FileZilla
FileZilla使⽤FTP传输时,实验室的服务器可能是出于安全考虑,没有开放21端⼝;想到ssh可以登录,就换SFTP来传输⽂件(22端⼝)。
也可以⽤scp rz sz等等,但我觉得在windows上使⽤FileZilla的图形界⾯拖拽就很⽅便。
2.安装
2.1 Linux软件安装
⾸先了解下Linux下软件的安装,参考
2.2 Anaconda
实验室服务器之前已经装了各种版本的python,⼤家都是各⽤各的,在⾃⼰的⽬录下使⽤anaconda,我也不敢随便改/etc/profile(也没权限= =),就也在⾃⼰⽬录下装个anaconda
吧。。
安装python我还是第⼀次⽤anaconda(之前⼀直都是pip管理),
参考的,看着理解了下anaconda的安装过程,
配置环境变量的配置我只改了我这个⽤户的,也就是~/.profile,注意把 ~/anaconda/bin放到$PATH前,因为bash中执⾏python命令时会按PATH中的顺序进⾏搜索。
我的配置:
#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 272019, 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 -vxfz 解压,⽬前只是得到了求解器
在~/.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 /u
sr/lib/python3.4 /usr/lib/python2.
4.运⾏
4.1 命令⾏python脚本传参
⾸先了解下命令⾏中怎么在执⾏python⽂件时传⼊参数,可以参考
4.2 python import model
其次是理解下python的import机制,因为windows下pycharm会帮你把sys.path(上⾯演⽰的)等给你预置好了,直接执⾏就可以,但在命令⾏中执⾏会遇到
ModuleNotFoundError。
我看的,主要是知道python从哪import models。
明⽩了这个,接下来就是怎么让python到⾃⼰写的models。
⼀种⽅法是在.py⽂件中使⽤sys.path.append()来添加,可以参考和
使⽤绝对路径显然不适⽤于经常换平台执⾏,但使⽤相对路径得确保要执⾏的⽂件与项⽬根⽬录之间的相对关系不变,我这代码还在测试阶段,可能会经常变动= =,所以想在命令⾏直接将项⽬根⽬录添加到pythonmodels的列表中。
⼀开始以为是PATH变量,尝试将项⽬⽬录添加到PATH变量中,发现还是会报错,之后百度了才知道,,,是PYTHONPATH
可以在~/.profile中添加(记得 source ~/.profile),也可以命令⾏执⾏(每次重新开启终端都要执⾏)
export PYTHONPATH=~/projects/vnf_flow:$PYTHONPATH
4.3 后台运⾏
由于我要跑多个实验,每个实验都要输出⼀些结果,所以需要进程后台运⾏,
screen就很不错,可以参考
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论