我有一个在虚拟环境中运行的Python 3.9脚本.主机环境使用Python 3.6和许多已安装的包设置.我需要能够运行一个shell脚本,该脚本只有在主机环境中运行时才能正常运行.
我不可能让3.9虚拟环境适用于此Shell脚本,也不可能更新Shell脚本以在Python 3.9中工作.
当我在命令行上运行脚本时,我需要调用deactivate
,运行shell脚本,然后重新激活虚拟环境.
我希望能够在我的3.9 venv中运行的Python程序中执行与此相同的操作.但由于我试图运行Shell脚本而不是Python程序,因此我不能简单地直接调用Python 3.6解释器来解决问题.
我能想到两个解决方案:
- 创建一个临时shell脚本,该脚本停用venv并调用目标shell脚本.然后从我的Py3.9程序中运行该临时shell脚本.我假设停用仅适用于我运行shell脚本时创建的作用域.
- 为我想运行的每个程序创建一个别名,但首先运行停用,例如
alias run_myprog = "deactivate; myprog"
,尽管必须为我需要运行的每个程序创建一个别名会有点乏味.
还有比上述两个更好的解决方案吗?
(这与this question有关.不同之处在于,问题是询问是否运行Python 3.6程序,而不是依赖于Python 3.6的shell脚本.)