【问题标题】:Python script that leaves an activated virtualenv after it halts [duplicate]停止后留下激活的virtualenv的Python脚本[重复]
【发布时间】:2022-01-19 15:29:21
【问题描述】:

我正在尝试创建一个实用 CLI,它创建一个空的 python 项目,里面只有一个 .venv。

我想要的功能之一是,当 CLI 结束项目创建时,它将 bash 留在项目文件夹中并激活 virtualenv。这样:

(base) ubuntu@pc:~/dev/cli$ python cli.py start ./folder

        ... do it's magic ...

        ... and ends up like this:
(.venv) ubuntu@pc:~/dev/cli/folder$ 

请注意,现在 cwd 位于 文件夹 中,并且 **(.venv) ** 已激活。

我能够通过以下方式实现我的部分目标(更改文件夹):

import os

os.chdir("./folder")
os.execl("/bin/bash", "/bin/bash")

但没有找到在程序停止后保持 venv 激活的方法。

有什么想法吗??

【问题讨论】:

  • /bin/bash -c ". ../.env/bin/activate; exec /bin/bash -i"
  • 这对我不起作用@phd

标签: python bash virtualenv


【解决方案1】:

bash 具有-rcfile 选项,允许使用非标准初始化文件。

import os

os.chdir("./folder")
os.execl("/bin/bash", "/bin/bash", "--rcfile", ".venv/bin/activate")

这应该足以让新的.venvbash shell 中处于活动状态。

【讨论】:

  • 谢谢你的工作!一个细节是,通过这个实现,bash 返回非常原始,没有通常的 ubuntu 终端语法突出显示。有什么线索吗?
  • @VittorFaria:默认情况下bash 读取.bashrc 文件。这里它读取bin/activate而不是它的默认初始化文件。
猜你喜欢
  • 2018-08-02
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2020-09-06
  • 2017-12-18
  • 1970-01-01
相关资源
最近更新 更多