配置便捷的开发环境(PyCharm & Jupyter)

由于在PyCharm中进行统计整理数据、画图等操作有诸多的不便。在本地的jupyter notebook进行处理又显得步骤繁琐(传输文件),故萌生在服务器搭建jupyter notebook的想法。两种工具优势互补,从而最大程度上集中注意力在项目本身,提升开发效率。

原文发布于个人博客(好望角),并在博客持续修改更新,此处可能更新不及时。


“工欲善其事,必先利其器”,接下来看看如何用PyCharm和Jupyter配置最便捷的python开发环境。

PyCharm

image

一打开软件界面,满满的科幻感迎面扑来。用色块构建的魔幻画面好似一张变形金刚的面庞。最新的版本加入了默认的Vim编辑模式,让强大的PyCharm更如猛虎添翼一般。

基础配置

打开设置界面的快捷键是Ctrl+Alt+S

  • 背景色:软件默认的背景是白色的,这显然不符合我们广大程序员的审美。File -> Appearance &Behaior -> Appearance 中可以修改, Darcula 是常用的黑色主题。

  • 字体:不出意外的话,你会认为它的字体有些小。File -> Editor -> Font 中可以放大,console中的代码和编辑区的代码设置方式类似。

  • 主题:如果对默认主题的配色不满意,可以在 File -> Editor -> Color Scheme 中修改。

  • 代码风格:在 File -> Editor -> Code Style 中,可以对不同类型的代码文件可以分别进行个性化设置。

代码模板

懒人改变世界,而程序员往往都很懒。。。能让计算机手工完成的内容绝对不会自己动手重复添加。

不难发现,在程序开发过程中,有一些代码基本没有变化,而且我们会经常性的重复使用。那么,这种傻傻很麻烦的事情最适合计算机来自动完成了。显然,开发PyCharm的程序员小哥想到了这一用户痛点。

File -> Editor -> File and Code Templates 中,我们可以将常用的文件类型中的一些常用代码写入该类型文件的默认模板中,例如。

# -*- coding: utf-8 -*-

除此之外,还可以在文件开头添加一些注释信息。如下所示:

image

版本控制

一个好的开发环境不可能没有版本控制系统。

PyCharm内置了CVS、Git、Mercurial、Subversion等多种版本控制工具,我们只需要简单的配置即可使用。

从github上Clone 代码,上传保存,进行版本控制,多人协同开发,统统可以在软件内轻松地完成。

远程调试

这是一个超级良心的免费功能,我相信即使这个功能收费,也会有很多程序员小哥继续使用PyCharm。在其他的地方写代码,我们都需要在本地调试好,再上传服务器。出问题后,再次修改,再次上传,非常浪费时间。那么如何简化本地代码和服务器代码之间的沟通工作呢?PyCharm也帮我们内置好了。

Tools -> Deployment -> Configurtion中可以配置好多台服务器,如果服务器中的python环境配置良好,我们就不需要再单独在本地配置一遍。配置如下所示:

image

在对应的位置填写好服务器的位置,自己的用户名和密码,以及想要打开的根目录(节省重复打开文件夹的时间)。

第二个选项卡Mappings中配置本地项目和服务器项目对应的映射关系。这里有个需要注意的地方,建议只将代码和训练语料分开存储,不要使训练语料成为映射项目的一部分,加快加载速度。在第一次配置好开发环境的时候,需要将服务器的一些文件下载到本地,需要稍等几分钟,以后就很幸福了!

Tools -> Deployment -> Configurtion中选择本地文件的上传方式,我这里将Ctrl+S设置为本地保存并上传服务器。

Jupyter-notebook

对于jupyter notebook来说,它的缺点还是十分明显的。没有一个很好的框架,不能清晰的构建大型项目。也不曾拥有IDECtrl+点击函数名就可以跳转的方便功能,导致阅读代码吃力。

但同样的,它的对于PyCharm的优点也是无可替代的。

  • PyCharm简直是一个科学计算的神奇,在做数据挖掘的时候,代码和报告(支持latex公式)高度融合,无需二次撰写。

  • 在处理数据的时候,所有中间结果不会被擦除,都显示在对应的cell下面。方便调试,减轻记忆的工作量。

  • 方便的图表展示,不像PyCharm那样,会新弹出一个窗口展示图片,图文融合在一起。

  • 等等……

虽然优点众多,但如果只能在本地运行也只能算是鸡肋。经常将工程中的部分文件从服务器传输到本地再分析,这是一件很累人的事情。

服务器jupyter搭建

  • 首先保证我们的linux服务器的python(Anaconda)环境已经配置好了。

  • 打开Ipython,输入如下两行代码后,会生成一个字符串,例如”sha1:9305015210b4:32cad364c85e7f7a13b9efa137cfadf633cc62d“。请复制出来暂时保存,稍后会使用。

from notebook.auth import passwd
passwd()
  • 如果~/.jupyter路径下没有 jupyter_notebook_config.py ,则输入如下命令新建它。
jupyter notebook --generate-config
  • 新产生的文件中的所有内容都以注释的形式存在,直接在文件末尾加入如下几行代码,并根据自己的环境调整路径。
c.NotebookApp.ip = '*'  # 允许访问此服务器的 IP,星号表示任意 IP
c.NotebookApp.password = u'sha1:xxx:xxx' # 之前生成的密码 hash 字串
c.NotebookApp.open_browser = False # 运行时不打开本机浏览器
c.NotebookApp.port = 12035 # 使用的端口
c.NotebookApp.enable_mathjax = True # 启用 MathJax
  • 由于大家公用的服务器,我并没有管理员权限,不能将jupyter notebook添加为系统级别的服务。我们只需执行如下命令就可以方便的在本地调用jupyter notebook了(服务器不会经常重启)。
nohup jupyter notebook > notebook.file 2>&1 &

调用方式:在本地浏览器中输入服务器地址:设置的端口号即可。例如:165.32.65.109:7060

Jupyter 优化

  • 更换主题

    • 对于程序员来说,Jupyter默认的白色背景不是很友好,为了和黑色的Pycharm更加搭配,可以先执行如下命令安装其他主题 pip install jupyterthemes --user
    • 安装好之后的操作很简单,如下例所示。
    # list available themes
    # onedork | grade3 | oceans16 | chesterish | monokai | solarizedl | solarizedd
    # 列出所有可用的主题
    jt -l
    
    # select theme...
    # jt -t 主题名
    jt -t chesterish
    
    # restore default theme
    # NOTE: Need to delete browser cache after running jt -r
    # If this doesn't work, try starting a new notebook session.
    # 恢复默认主题
    jt -r
    
  • 自动代码补全

    • 虽然Jupyter也可以代码补全,但是总是需要多此一举的按一个Tab键,与PyCharm风格不搭配。

    • 方法一:执行ipython profile create 命令, vim ~/.ipython/profile_default/ipython_config.py,修改成如下样子。重启jupyter后生效

      ## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care
      #  of with Jedi.
      #
      #  This will enable completion on elements of lists, results of function calls,
      #  etc., but can be unsafe because the code is actually evaluated on TAB.
      c.Completer.greedy = True
      
      ## Experimental: restrict time (in milliseconds) during which Jedi can compute
      #  types. Set to 0 to stop computing types. Non-zero value lower than 100ms may
      #  hurt performance by preventing jedi to build its cache.
      c.Completer.jedi_compute_type_timeout = 400
      
      ## Experimental: Use Jedi to generate autocompletions. Off by default.
      c.Completer.use_jedi = True
      
    • 方法二:安装如下插件,如果报错,还需要更新配置一些包环境:

pip install jupyter_contrib_nbextensions --user
pip install jupyter_nbextensions_configurator --user
pip install --upgrade ipykernel --user
chmod 777 ~/.local/share/jupyter/
pip install --upgrade --user nbconvert
pip install --upgrade jupyter_core jupyter_client --user

总结

至此,PyCharm 和 Jupyter 都已经配置完毕。今后PyCharm仍然是主力的代码编辑工具。但在工程构建过程中,免不了许多中间结果需要分析和查看,这个时候Jupyter就可以派上用场。进行轻量的模块化分析任务。另外,Jupyter也可以打开文本文件进行编辑(可以自由选择Vim/Sublime等编辑模式),这样就不用使用WinSCP来单独查看文件;Jupyter也可以打开Terminal,这样我们就不用再单独使用Xshell,Xming等软件。释放本地内存,

我们只需要开启浏览器和PyCharm就可以方便交互服务器,进行代码的版本控制,以及进行数据分析。接下来可以更加愉快的干活了!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • 一、什么是Jupyter Notebook? 1. 简介 Jupyter Notebook是基于网页的用于交互计算...
    Raxxie阅读 1,441,781评论 36 704
  • 原文链接 《Python数据分析》(Python for Data Analysis, 2nd Edition)第...
    李绍俊阅读 8,250评论 0 5
  • 给初学者的 Jupyter Notebook 教程 Jupyter Notebook 是一个非常强大的工具,常用于...
    Jancd阅读 26,051评论 2 30
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • 年少轻狂不知路在何方, 风雨飘摇只当它是春至末寒霜。 年少轻狂不知时光几许, 红日升落只当它是朝夕霞光。 年少轻狂...
    序小木阅读 693评论 17 11