我想进入python files.But中的虚拟环境,它不会引发这样的文件。
import subprocess
subprocess.Popen(['source', '/Users/XX/Desktop/mio/worker/venv/bin/activate'])
回溯(最近一次调用):文件"/Users/Ru/Desktop/mio/worker/run.py",第3行,在'/Users/Ru/Desktop/mio/worker/venv/bin/activate') (‘subprocess.Popen’)中 File"/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py",第710行,在init errread中 File"/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py",第1335行,在_execute_child raise child_exception中 OSError: Errno 2没有这样的文件或目录
发布于 2016-07-13 14:34:10
我认为您的代码不起作用,因为您正在将'source‘命令从虚拟路径参数中分离出来,与文档分离
“特别要注意的是,shell中由空格分隔的选项(如-input)和参数(如eggs.txt)位于单独的list元素中,而在shell中使用时需要引用或反斜杠转义的参数(例如包含空格的文件名或上面显示的回显命令)是单个列表元素。”
您应该尝试以下两种方法之一:首先,将源代码和虚拟文件路径编写为一个字符串参数:
import subprocess
subprocess.Popen(['source '/Users/XX/Desktop/mio/worker/venv/bin/activate'])
我正在开发OSX,这似乎不起作用,但这可能是由于您正在使用的shell。要确保此操作正常,可以使用shell=True标志:
import subprocess
subprocess.Popen(['source '/Users/XX/Desktop/mio/worker/venv/bin/activate'],shell=True)
默认情况下,这将使用/bin/ shell。同样,您可以在文档中阅读更多内容。
汤姆。
发布于 2016-07-21 15:39:45
还有一种更简单的方法来做你想做的事。如果您希望python脚本使用virtualenv,则始终可以使用virualenv本身的python解释器。
/User/Ru/Desktop/mio/worker/venv/bin/python my_python_file.py
这将使用virtualenv的属性/库运行my_python_file.py。
如果要在子进程中运行该文件,可以执行类似于我前面描述的方法的操作:
import subprocess
subprocess.Popen(['/Users/Ru/Desktop/mio/worker/venv/bin/python my_python_file.py])
并让my_python_file.py进口皮卡,并做其他你想做的动作。
汤姆。
https://stackoverflow.com/questions/38351204
复制相似问题