goh*_*goh 3 python django subprocess mod-wsgi wsgi
我在其中一个视图中使用了subprocess.Popen:
path = os.path.join(os.path.dirname(__file__), 'foo/bar.py')
subprocess.Popen(["python",path])
Run Code Online (Sandbox Code Playgroud)
在我的wsgi文件中,我有
import os
import sys
ppath = '/home/socialsense/ss/src'
if ppath not in sys.path:
sys.path.append(ppath)
os.environ['DJANGO_SETTINGS_MODULE'] = 'ss.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)
而在src我有ss,我的Django项目.
但是当我检查我的日志文件时,bar.py遇到了错误,ImportError: No module named ss.discovery.models.现在似乎模块ss本身在sys.path使用时不在Popen......
我在这里做错了什么?
它只sys.path适用于当前的Python实例.为了得到它的另一个,使用env参数Popen有os.pathsep:
import subprocess
import os
import sys
subprocess.Popen(["python",path], env = {'PYTHONPATH': os.pathsep.join(sys.path)})
Run Code Online (Sandbox Code Playgroud)
您应该真正研究运行多个Python实例的multiprocessing模块.
编辑:@Graham在评论中指出,您可能希望使用与您调用的Python不同版本的Python运行此外部脚本.这对我来说听起来不太可能,但如果是这样的话,你需要大部分PYTHONPATH时间来使它工作,所以你需要添加/home/socialsense/ss/src.
| 归档时间: |
|
| 查看次数: |
1362 次 |
| 最近记录: |