首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >子进程开放(“源venv/bin/activate”),没有这样的文件吗?

子进程开放(“源venv/bin/activate”),没有这样的文件吗?
EN

Stack Overflow用户
提问于 2016-07-13 12:01:26
回答 2查看 1.9K关注 0票数 1

我想进入python files.But中的虚拟环境,它不会引发这样的文件。

代码语言:javascript
运行
复制
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没有这样的文件或目录

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-13 14:34:10

我认为您的代码不起作用,因为您正在将'source‘命令从虚拟路径参数中分离出来,与文档分离

“特别要注意的是,shell中由空格分隔的选项(如-input)和参数(如eggs.txt)位于单独的list元素中,而在shell中使用时需要引用或反斜杠转义的参数(例如包含空格的文件名或上面显示的回显命令)是单个列表元素。”

您应该尝试以下两种方法之一:首先,将源代码和虚拟文件路径编写为一个字符串参数:

代码语言:javascript
运行
复制
import subprocess 
subprocess.Popen(['source '/Users/XX/Desktop/mio/worker/venv/bin/activate'])

我正在开发OSX,这似乎不起作用,但这可能是由于您正在使用的shell。要确保此操作正常,可以使用shell=True标志:

代码语言:javascript
运行
复制
import subprocess
subprocess.Popen(['source '/Users/XX/Desktop/mio/worker/venv/bin/activate'],shell=True)

默认情况下,这将使用/bin/ shell。同样,您可以在文档中阅读更多内容。

汤姆。

票数 1
EN

Stack Overflow用户

发布于 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。

如果要在子进程中运行该文件,可以执行类似于我前面描述的方法的操作:

代码语言:javascript
运行
复制
import subprocess 
subprocess.Popen(['/Users/Ru/Desktop/mio/worker/venv/bin/python my_python_file.py])

并让my_python_file.py进口皮卡,并做其他你想做的动作。

汤姆。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38351204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档