def xonsh_shell(exe_dir, shell_path):
if ON_WINDOWS:
result = subprocess.run(
[shell_path or 'xonsh', '-i', '-D',
'VIRTUAL_ENV={}'.format(os.path.dirname(exe_dir))],
shell=NEED_SUBPROCESS_SHELL
)
return result.returncode
else:
terminal = pexpect.spawn(
shell_path or 'xonsh',
args=['-i', '-D', 'VIRTUAL_ENV={}'.format(os.path.dirname(exe_dir))],
dimensions=get_terminal_dimensions()
)
def sigwinch_passthrough(sig, data):
terminal.setwinsize(*get_terminal_dimensions())
signal.signal(signal.SIGWINCH, sigwinch_passthrough)
# Just in case pyenv works with xonsh, supersede it.
terminal.sendline('$PATH.insert(0, "{}")'.format(exe_dir))
terminal.interact(escape_character=None)
terminal.close()
return terminal.exitstatus
评论列表
文章目录