我使用 IPython 和 %bookmark
魔术命令,但限制是我需要退出 IPython shell 以激活虚拟环境,然后重新启动 IPython。
是否有内置于 IPython、第三方包或已知 hack 中的方法让我在不退出 IPython shell 的情况下激活环境?
实际工作流程
# within ipython shell
exit
# bash shell
cd path/of/my/project
poetry shell # or pipenv shell
ipython
预期的工作流程
%cd -b demographics
# activate venv
import package # from that env
最佳答案
这是一个很好的问题,但不幸的是,答案可能不是您所希望的。如果我正确理解你的问题 - 这是不可能的。因为虚拟 shell 激活本质上是运行子进程,它为另一个 Python 解释器设置 PATH,然后为此设置 PYTHONPATH 环境变量。子进程永远不能在任何操作系统中修改其父进程。例如,您不能更改已经运行的 Python 解释器,因为在内存中替换正在运行的进程非常复杂,而且在实践中从未做过。
如果这是一个工作流程问题并且您肯定想从 IPython 中执行此操作,我建议您编写一个单行复制粘贴命令来执行以下操作:
- 使用 virtualenv 启动一个新的 IPython,例如
(source venv/bin/activate && ipython)
- 终止从 virtualenv 启动的旧的现有 IPython session (尽管不确定如何在 IPython 提示符下退出 IPython)
对于他的工作流程问题,可能有更好的解决方案。也许有一个类似于 %%bookmark
的工作流程,但是对于整个 Python 环境和流程,比如创建 shell 脚本。
关于python - 如何在 IPython shell 中获取或激活虚拟环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70512548/