我想远程运行本地 python 脚本,但首先在远程机器中激活适当的环境。例如,如果在本地运行,我会这样做:
source activate myenv
python myscript.py
我想我可以像这样使用 ssh 来做到这一点:
ssh user@host "source activate myenv && python" < ./myscript.py
但是,这似乎不起作用。它产生错误消息:
bash: activate: No such file or directory
做这样的事情的最好方法是什么?
如果您只想执行脚本并退出,则无需激活虚拟环境。激活虚拟环境只是通过调整
PATH
1替换 python 可执行文件的便捷方法。所以,命令可以有效地替换为
因此,当通过 运行脚本时
ssh
,只需选择myenv
s python 可执行文件的正确路径即可:1除此之外,环境变量
VIRTUAL_ENV
被设置并且环境名称被添加到PS1
.我最近(2022 年 7 月)遇到了类似的问题。我试图在运行 Django 的远程生产服务器上进行一些维护。
我可以手动执行此操作,但很难通过脚本执行此操作。
我试过了
它负责找到适当的 python 和 manage.py,但在 Path 中没有虚拟环境位置(已安装的软件包需要该位置)。
最终对我有用的解决方案是
需要注意的几点:
如果可以
source activate myenv
在 shell 中执行,那么 activate 必须是$PATH
. 找到该文件并指定完整路径。它必须存在于远程计算机上。或者找出这个激活脚本的作用,然后将分配发送到远程计算机。