我想从Python脚本激活一个virtualenv实例。
我知道这很容易做到,但我见过的所有示例都使用它在env中运行命令,然后关闭该子进程。
我只想激活virtualenv并返回到shell,就像bin/activate一样。
如下所示:
$me: my-script.py -d env-name
$(env-name)me:
这个是可能的吗?
相关:
发布于 2013-02-10 06:38:07
如果您想要在virtualenv下运行Python子进程,可以通过使用virtualenv的/bin/目录中的Python解释器运行脚本来实现:
import subprocess
# Path to a Python interpreter that runs any Python script
# under the virtualenv /path/to/virtualenv/
python_bin = "/path/to/virtualenv/bin/python"
# Path to the script that must run under the virtualenv
script_file = "must/run/under/virtualenv/script.py"
subprocess.Popen([python_bin, script_file])
但是,如果您希望在当前Python解释器下而不是在子进程下激活virtualenv,则可以使用activate_this.py
脚本:
# Doing execfile() on this file will alter the current interpreter's
# environment so you can import libraries in the virtualenv
activate_this_file = "/path/to/virtualenv/bin/activate_this.py"
execfile(activate_this_file, dict(__file__=activate_this_file))
发布于 2015-05-30 11:23:28
在virtualenv的解释器下运行脚本的最简单的解决方案是将默认的shebang行替换为您的virtualenv的解释器的路径,如下所示:
#!/path/to/project/venv/bin/python
使脚本可执行:
chmod u+x script.py
运行脚本:
./script.py
瞧!
发布于 2011-08-04 23:57:57
事实证明,是的,问题并不简单,但解决方案却很简单。
首先,我必须创建一个shell脚本来包装"source“命令。也就是说,我使用了“。相反,因为我读到过Bash脚本使用它比源代码更好。
#!/bin/bash
. /path/to/env/bin/activate
然后,从我的Python脚本中,我可以简单地执行以下操作:
import os
os.system('/bin/bash --rcfile /path/to/myscript.sh')
整个技巧在于--rcfile
参数。
当Python解释器退出时,它将当前shell留在激活的环境中。
赢!
https://stackoverflow.com/questions/6943208
复制相似问题