資訊內容
使用nohup運行python報錯
Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
在linux下可以直接使用python test.py運行的文件,使用nohup python test.py就會報錯,報的錯大致就是Import error: No module named XXX。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
出現這種情況是因為nohup找到的python路徑不對導致的。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
那么nohup找的的路徑是什么呢?Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
新建了一個python文件,文件內容是這樣的:Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
import sys print(sys.path)當使用python test.py運行文件時,輸出是:Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
當使用nohup python test.py時,輸出是這個樣子的Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
也就是說,直接運行python命令使用的是python3,但是nohup找到的python路徑是python2。這時候就需要指定python版本來運行py文件。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
這時,只要指定python版本來運行nohup文件即可:Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
也就是:nohup //usr/local/python3/bin/python3 test.py > log.txt2>&1 &。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
其中,1代表標準輸出,2代表標準錯誤輸出,2>&1 是將標準錯誤輸出重定向到標準輸出,也就是將標準輸出和標準錯誤輸出都輸出到log.txt文件中,**后的&將程序變為后臺守護進程,這樣運行的程序就不會隨著終端的掛起而停止。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
更多Python知識請關注Python視頻教程欄目。Dlz少兒編程網-Scratch_Python_教程_免費兒童編程學習平臺
