赞
踩
工欲善其事,必先利其器。
很多童鞋都是在本地编写和调试代码,然后再将代码通过某种方式传到服务器上,用vim修修改改然后运行。先不说本地和服务器手工维护和同步两份代码劳心劳肺,若不是对vim编辑文件得心应手也自然会费时费力。因此,强烈推荐写python的同学用pycharm远程链接远程服务器,下面具体讲讲如何连接。
首先,说明,想要pycharm链接远程服务器,必须是professional版本的pycharm!
然后,说明,pycharm也可以链接服务器上的虚拟环境的!
一、配置链接远程服务器
1.配置服务器IP,地址
如下图,点击configuration
点击“+”,新建sftp
填写相关内容
然后点击ok即可。
3 查看同步的文件
以上,Deployment的配置就完成了。这个配置完成了之后,其实是相当于配置了一个ftp工具可以连接到服务器上,从而可以查看和修改服务器上的文件。你可以通过Tools > Deplotment > Browse Remote Host来打开相应的RemoteHost面板,这个面板显示的就是服务器上的文件,显示的范围是你在Deployment中的Connection选项卡下配置的Root path路径下的文件及文件夹。
打开远程面板:
右边就会出现菜单栏,可查看远程文件:
你可以直接在RemoteHost面板里双击某个文件并且直接进行编辑。双击某个文件后你可以看到编辑区域的顶部有一个横条,并且横条的右边有三各按钮,分别是比较,撤销和上传操作。你在这里面编辑文件之后,可以直接点击上传按钮,就会提交到服务器了。
二、配置远程python解释器
点击project interpreter, 点击右边的按钮,并选择“add"
选择SSH interpreter, 并同理填写服务器的ip和账号名称
点击next,填写密码,填写python路径,注意服务器上有可能有很多Python,这里要填写你要用的那个,若是想链接虚拟环境,则填写虚拟环境中的python路径,可以去服务器上命令行执行”which python"查看路径。
三、配置cuda
如果要运行GPU程序,则需要配置环境变量:CUDA路径,如下图点击
点击enviroment variable后面的小图标
输入cuda的路径
cuda的配置信息可以到服务器上找,在终端执行"cat .bashrc"命令,将文件中cuda的配置进行复制即可。
好了,大功告成。
三、调试与测试
现在来测试一下。
在Pycharm中新建一个文件test.py,写入tensorflow代码:
import tensorflow as tf import os os.environ["CUDA_VISIBLE_DEVICES"] = '5' # Creates a graph. a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') c = tf.matmul(a, b) # Creates a session with log_device_placement set to True. sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) # Runs the op. print(sess.run(c))
右击,选择upload to,文件即同步到服务器中了
然后点击运行test.py,从后台打印的信息可见,已经成功运行在了服务器上。
在这个过程中,也可以发现,经过这样的配置,我们的代码现在一共有三个版本:一个是本地代码,一个是服务器上的代码,还有一个是RemoteHost面板中的代码(这个地方的代码如果直接编辑了,其实也可以提交到服务器,但是不能直接运行)
所以,如果通过上面的配置进行远程调试的话,我认为大致流程应该是下面这样:
在RemoteHost面板中,选中想要修改的代码,然后右键点击Download from here将内容下载至本地(这个本地是你在配置Deployment时设置的本地文件夹)。
在本地(这个本地是你在配置Deployment时设置的本地文件夹)修改你的代码,修改完成后在编辑区域或者文件名上右键,选择upload to…来提交到服务器。
在提交之后,你可以像普通调用本地解释器一样的直接运行本地的这个文件(但其实运行的是服务器的文件)
在这里,虽然RemoteHost里的文件可以直接编辑,但是并不建议这么做,因为这里编辑之后并不能直接运行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。