ubuntu运行python程序?python运行软件
ubuntu 下怎样安装python
1.先检查当前系统中是否已经安装python,直接使用python-V查看
2.也可以直接使用上图中提示的命令来进行安装python,但建议使用官网的安装包进行安装,如下图,选择相应的版本进行下载
3.下载完成后进行解压,解压完成后进入软件目录
4.使用如下命令进行编译安装,如下图
5.安装完成后,再对已经安装完成的软件检测发现已经安装成功,
Ubuntu下创建虚拟独立的Python环境全过程
虚拟环境是程序执行的独立环境,用于实现不同系统或项目之间的运行环境独立性,避免相互影响。在Python中,使用virtualenv工具管理虚拟环境,方便控制不同项目所需的Python版本和依赖包。
在Linux系统中,通过以下命令安装虚拟环境:
$ sudo pip install virtualenv或在Ubuntu中执行:
$ sudo apt-get install python-virtualenv
创建虚拟环境,使用以下命令:
$ virtualenv myvenv
激活虚拟环境并查看Python版本:
$ source myvenv/bin/activate
(myvenv)allen@ubuntu:~$ which python
/home/allen/myvenv/bin/python
退出虚拟环境使用:
deactivate
在激活虚拟环境下,可以使用pip安装包:
pip install Pillow
虚拟环境扩展包virtualenvwrapper提供额外功能,如管理多个虚拟环境。安装和配置如下:
安装virtualenv和virtualenvwrapper:
#安装virtualenv(sudo) pip install virtualenv
#安装virtualenvwrapper(sudo) pip install virtualenvwrapper
配置环境变量:
修改~/.bash_profile或相关文件,添加以下语句:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspaces
source/usr/local/bin/virtualenvwrapper.sh
然后运行:
source~/.bash_profile
使用virtualenvwrapper进行虚拟环境管理,如创建、切换、删除等:
创建运行环境:mkvirtualenv zqxt
切换到运行环境:workon zqxt
退出终端环境:deactivate
删除运行环境:rmvirtualenv ENV
创建项目和运行环境:mkproject mic
创建临时运行环境:mktmpenv
列出可用运行环境:lsvirtualenv
列出当前环境安装的包:lssitepackages
虚拟环境独立,无需sudo权限,便于使用pip管理包。通过这些步骤,可以高效管理多个Python项目和环境,保持系统稳定和项目独立性。
ubuntu python怎么作为守护进程一直运行
测试程序
先写一个测试程序,用于输出日志和打印到控制台。
#-*- coding: utf-8-*-
import logging
import time
from logging.handlers import RotatingFileHandler
def func():
init_log()
while True:
print"output to the console"
logging.debug("output the debug log")
logging.info("output the info log")
time.sleep(3);
def init_log():
logging.getLogger().setLevel(logging.DEBUG)
console= logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter= logging.Formatter('%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
console.setFormatter(formatter)
logging.getLogger().addHandler(console)
# add log ratate
Rthandler= RotatingFileHandler("backend_run.log", maxBytes=10* 1024* 1024, backupCount=100,
encoding="gbk")
Rthandler.setLevel(logging.INFO)
# formatter= logging.Formatter('%(asctime)s%(filename)s[line:%(lineno)d]%(levelname)s%(message)s')
Rthandler.setFormatter(formatter)
logging.getLogger().addHandler(Rthandler)
if __name__=='__main__':
func()
后台启动Python脚本
可以使用下面的命令来启动上面的脚本,让Python在后台运行。
nohup python-u main.py> test.out 2>&1&
来解释一下这几个命令的参数。这一段来自
其中 0、1、2分别代表如下含义:
0– stdin(standard input)
1– stdout(standard output)
2– stderr(standard error)
nohup python-u main.py> test.out 2>&1&
nohup+最后面的&是让命令在后台执行
>out.log是将信息输出到out.log日志中
2>&1是将标准错误信息转变成标准输出,这样就可以将错误信息输出到out.log日志里面来。
运行命令后,会返回一个pid。像下面这样:
[1] 9208
后续可以学习Hadoop它们,把pid存起来,到时候stop的时候就把它杀掉。
跟踪输出文件变化
为了验证脚本可以在后台继续运行,我们退出当前会话。然后重新连接一个Session,然后输入下面的命令来跟踪文件的输出:
tail-f test.out
输出内容如下:
output to the console
2017-03-21 20:15:02,632 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:02,632 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:05,635 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:05,636 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:08,637 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:08,638 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:11,640 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:11,642 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:14,647 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:14,647 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:17,653 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:17,654 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:20,655 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:20,656 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:23,661 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:23,661 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:26,665 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:26,666 main.py[line:12] INFO output the info log
output to the console
2017-03-21 20:15:29,670 main.py[line:11] DEBUG output the debug log
2017-03-21 20:15:29,671 main.py[line:12] INFO output the info log
说明我们的脚本确实在后台持续运行。
结束程序
可以直接通过之前的那个pid杀掉脚本,或者可以通过下面的命令查找pid。
ps-ef| grep python
输出的内容如下:
root 1659 1 0 17:40? 00:00:00/usr/bin/python/usr/lib/python2.6/site-packages/ambari_agent/AmbariAgent.py start
root 1921 1659 0 17:40? 00:00:48/usr/bin/python/usr/lib/python2.6/site-packages/ambari_agent/main.py start
user 8866 8187 0 20:03? 00:00:06/usr/bin/python3/usr/bin/update-manager--no-update--no-focus-on-map
root 9208 8132 0 20:12 pts/16 00:00:00 python-u main.py
root 9358 8132 0 20:17 pts/16 00:00:00 grep--color=auto python
可以看到我们的pid是9208,调用kill杀掉就可以了。
kill-9 9208
编写启动及停止脚本
启动脚本
#!/bin/sh
pid=`ps-ef|grep"python-u main.py"| grep-v"grep"|awk'{print$2}'`
if ["$pid"!="" ]
then
echo"main.py already run, stop it first"
kill-9${pid}
fi
echo"starting now..."
nohup python-u main.py> test.out 2>&1&
pid=`ps-ef|grep"python-u main.py"| grep-v"grep"|awk'{print$2}'`
echo${pid}> pid.out
echo"main.py started at pid:"${pid}
停止脚本
#!/bin/sh
pid=`ps-ef|grep"python-u main.py"| grep-v"grep"|awk'{print$2}'`
if ["$pid"!="" ]
then
kill-9${pid}
echo"stop main.py complete"
else
echo"main.py is not run, there's no need to stop it"
fi
稍后我会把实例代码上传到资料共享里面。