服務器(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後臺運行任務

相關文章
相關標籤/搜索