激活python3后,在服务器上的本地机器上运行python脚本



我想在文件夹内的服务器上运行python脚本(存在于本地机器上(,而不将其复制到服务器。登录到服务器后,我通常会做两件事来激活python3,因为在服务器中默认为python2(py3安装在服务器上(

conda activate 
conda activate py3
cd folder_name

此外,同一个python脚本需要一个数据,即data.txt,该数据也存在于本地机器中。然而,我正在从本地机器上尝试类似的东西

conda activate
conda activate py3
cd folder_name
ssh user@192.168.1.101 "python ./script.py"

但它不起作用。非常感谢任何专家的帮助。提前谢谢。

您的本地和远程设置是独立的。

如果您需要远程运行代码,则需要python/conda远程安装。如果您需要相同的功能,您可以利用conda-environment/vitual环境。

例如,您可以按如下方式使用conda环境。

# local machine
conda env export > environment.yml
# copy environment to remote machine
scp environment.yml ssh user@192.168.1.101
# remote
## make sure you have installed anaconda, you can wget the installation file
## you don't need root permission, you can have a user-wide installation.
conda env create -f environment.yml

EDIT如果您想在激活环境后使用单行命令运行

ssh user@192.168.1.101 "conda activate <envname>; python ./script.py"

无论如何,最好用bash脚本(在远程上(编写命令,该脚本可以封装所有内容。例如

远程上的wrapper.sh示例(记得将其呈现为可执行的chmod +x wrapper.sh(

#!/usr/bin/env bash
conda activate <envname>
python ./script.py

作为运行

ssh user@192.168.1.101 "./wrapper.sh"

如果您已经设置了远程conda安装,您可以额外利用管道来避免复制

# wrapper.sh is local, but you need conda on the remote machine
ssh user@192.168.1.101 'bash -s' < wrapper.sh

最新更新