赞
踩
开机启动折腾了好久,搞定开机启动但是启动python项目时又遇到问题搞了半天。
一、配置开机启动
ubuntu-18.04没有rc.local,不能通过rc.local来设置开机启动脚本,可以自己建一个。
建立rc-local.service文件
sudo vi /etc/systemd/system/rc-local.service
然后将下面内容复制进去
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
创建文件rc.local
sudo vi /etc/rc.local
然后将下面内容复制进去
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#后台启动python工程,结果重定向到log.txt
/usr/bin/nohup /usr/bin/python start_person.py > log.txt 2>&1 &
exit 0
给rc.local加上权限
sudo chmod +x /etc/rc.local
重启看看日志就可以.
二、解决python启动无法导入第三方模块问题
看日志发现导入模块失败,但是本地直接执行脚本没有任何问题
如 ImportError: No module named torch
分析
1)在本地进入python交互环境,查看python搜索路径
nvidia@nvidia-desktop:~/data/projects/dt_product$ python
Python 2.7.15+ (default, Nov 27 2018, 23:36:35)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/home/nvidia/.local/lib/python2.7/site-packages', '/home/nvidia/data/projects/dt_product', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-aarch64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0']
>>>
2)新建一个python脚本设置为开机启动,在此脚本中获取python搜索路径
!test.py
import sys
print sys.path
重新启动环境查看启动重定向得日志 log.txt :
['/home/nvidia/data/projects/dt_product', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-aarch64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0']
对比发现少了一个路径:'/home/nvidia/.local/lib/python2.7/site-packages',环境上看此路径为无法import 包得安装路径;应该是安装这些包时留的坑。
解决
一种是安装时注意下路径,一种是把这个路径加到环境变量中。
加入环境变量网上搜有几种,但是试了都不行,因为启动python项目时改环境变量未生效,所以最简单得就是在启动python项目前加入该变量。
打开刚才创建得启动python项目得文件,启动前加入环境变量
sudo vi /etc/rc.local
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. #加入环境变量 export PYTHONPATH=/home/nvidia/.local/lib/python2.7/site-packages:$PYTHONPATH #后台启动python工程,结果重定向到log.txt /usr/bin/nohup /usr/bin/python start_person.py > log.txt 2>&1 & exit 0
重启再查看日志是否启动。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。