搜索

首页  >  问答  >  正文

shell - 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模块,都没有得到答案,可能我看得不够深。小白一个,希望得到解答,谢谢。

PHPzPHPz2892 天前368

全部回复(2)我来回复

  • 天蓬老师

    天蓬老师2017-04-18 09:09:11

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

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

    回复
    0
  • PHP中文网

    PHP中文网2017-04-18 09:09:11

    有关如何在 script 中运行其它 python script:

    • python2 可以使用 execfile

    • python3 可以使用 exec

    execfile 的范例:execfile 的範例:

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

    透過 exe.py

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

    透过 exe.py 来运行:
    rrreee

    我回答过的问题

    : Python-QA🎜

    回复
    0
  • 取消回复