2016-02-25 34 views
0

我正在使用linux。我试图从django视图中的函数运行守护进程。我想从Djangp应用程序中的视图运行shell命令。我正在使用Python 2.7。命令需要python2.7路径。在django应用程序中获取python2.7路径以进行子进程调用

我的应用程序将像插件一样播放。所以在它要安装的系统上可能会安装python在不同的位置。所以我想让python路径变成动态的。

命令将被

usr/bin/python2.7 filename.py --start 

在我的系统路径是USR /斌/ python2.7。

我发现了使用os的follwing。

Python的壳我尝试下面的代码&我得到了我想要

import os 
    getPyPath = os.popen('which python2.7', 'r') 
    pyPath = getPyPath.read() 
    pyPath.rstrip() 

我得到了O/P预计如下

USR /斌/ python2.7

作为什么

那么现在如何得到这段代码是django app的查看函数&运行它以便我可以在变量中获取python路径。

我发现pythons subprocess模块​​调用,我们可以通过使用shell = True通过shell运行命令。

所以我可以得到上面的代码运行在Django视图函数使用子进程调用?

如果不是在函数django视图中获取python路径变量的其他方法是什么。

在此先感谢。

+0

这是一个奇数的要求。你打算部署这个应用程序有多少个不同的系统?您可以通过简单的硬编码路径轻松下车。 – Wtower

+0

它是我开发和提交的一项任务。关于它的安装位置,我不知道。硬编码在那里不起作用 – Rohit

回答

1

要查看完整路径当前Python解释,使用sys.executable

import sys 

print(sys.executable) 
+0

它显示'/ usr/bin/python'。我想要版本特定的路径。 – Rohit

+0

@Rohit这样就可以为你提供“当前Python解释器的完整路径”,就像伊恩说的那样。它向您显示您正在使用的任何python解释器。 – Wtower

+0

我试过了,但没有工作。我在aws ec2实例上试过了。有python2.7安装在/ opt/.../....的某处,这是给/ usr/bin/python。 – Rohit