我想在文件夹内的服务器上运行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