shell - python 内运行子进程的问题,求解答
PHPz
PHPz 2017-04-18 09:07:11
[Python讨论组]

我想要在 python 里开启virtualenv,然后运行一些命令,该怎么做呢?

import subprocess
p = subprocess.Popen(['source /Users/XX/Desktop/mio/worker/venv/bin/activate'],shell=True)
print p.stderr
import pika

输出如下:

None
Traceback (most recent call last):
  File "/Users/Ru/Desktop/mio/worker/run.py", line 6, in <module>
    import pika
ImportError: No module named pika


另外,我想在python内打开一个终端运行a.py,另外再打开另一个终端运行b.py。该怎么做呢?


看了subprocess和EasyProcess模块,都没有得到答案,可能我看得不够深。小白一个,希望得到解答,谢谢。

PHPz
PHPz

学习是最好的投资!

全部回复(2)
天蓬老师

Popen会创建子进程,source /Users/XX/Desktop/mio/worker/venv/bin/activate会增加一些环境变量,这些环境变量只在子进程内有效,不会影响父进程。
通常都是在shell中运行如下命令,然后再用python执行:

#> source /Users/XX/Desktop/mio/worker/venv/bin/activate
#> python a.py
PHP中文网

有關如何在 script 中運行其它 python script:

  • python2 可以使用 execfile

  • python3 可以使用 exec

execfile 的範例:

# a.py
def test(x):
    return x

print(test(a))

透過 exe.py 來運行:

# exe.py
execfile('a.py', {'a':5})

我回答過的問題: Python-QA

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号