之前一直使用pycharm, 算是本地编程环境里面比较好的, 但是在代码需要远程运行, 并且取回执行结果, 如生成的图片和实时加一些说明的时候, 纯python代码就没有那么好用了。
发现大家都在用ipython, 环境自然就是jupyter notebook
目前环境已经安装了virtualEnv, 在virtualEnv下安装的tensorflow等包
安装ipython, jupyter notebook
$ pip install ipython
$ pip install jupyter
$ source ~/ml/bin/activate //激活环境
(ml)$ pip install ipykernel
(ml)$ python -m ipykernel install --user --name=ml
安装完毕后, 命令行敲击jupyter notebook
就会在本地localhost:8888用浏览器打开notebook, kernel选择ml(--name后面定义的那个名字)即可。
参考资料:
使用virtualenv搭建包含tensorflow的jupter notebook运行环境
远程访问notebook
目前, 在虚拟机或者服务器上搭建好notebook后, 本地无法直接访问, 需要修改配置
- 登录远程服务器
- 生成配置
$ jupyter notebook --generate-config
- 生成密码, 在ipython中输入密码, 获取sha1:41107558f125:91c692f7a58c50????????这个字段, 注意包括sha1
$ ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:41107558f125:91c692f7a58c50????????'
- 修改配置文件
$vi ~/.jupyter/jupyter_notebook_config.py
//如下修改:
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha:ce...刚才复制的那个密文'
c.NotebookApp.open_browser = False
c.NotebookApp.port =7777#最好换一个端口, 免得和其他的服务产生冲突
c.NotebookApp.certfile = u'./mycert.pem # 为了打开https用
c.MultiKernelManager.default_kernel_name = 'ml' #如果在pycharm里面运行jupyter, 我用的版本还不支持更换kernel, 所以在jupyter config里面默认使用ml, 就是你创建的kennel的名字.
- 生成https用的认证文件【1】
$ openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mycert.pem -out mycert.pem
之后会要求你输入国家, 地区, 公司, 名字, email等信息, 可以随便写, 不会验证。
该命令在当前文件夹下生成mycert.pem, 推荐放到~/.jupyter/
目录下。
- 在你想要的路径下面运行
$ jupyter notebook
注意, 隐藏目录访问端口, 会导致访问失败。可以切换到你的工作目录或者 ~下运行这个命令。
如果提示PermissionError: [Errno 13] Permission denied: '/run/user/0/jupyter'
输入export XDG_RUNTIME_DIR=""
即可解决该问题
- 在pycharm中运行(可选)
pycharm里面和网页版的快捷键稍微有点冲突, 但是补全的库是下载到本地的, 所以补全什么的, 会快一丢丢,
另外, 有段时间不用经常用到的快捷键, 这里稍微回顾一下:
alt-enter 智能提示;比如辅助import或者什么的;
ctrl-space 自动补全;Code Completion;在设置中用关键词Code Completion可以找到如何关闭大小写, 对于我们常常搞混一些api大小写的人来说, 还是有必要打开的, 默认是区分大小写的。
pycharm 不是万能的, 对于习惯了jupyter notebook的人来说, pycharm使用还是有很多问题, 比如不能使用magic function等等, 不过单独用来敲代码, 偶尔调试一下, 还是值得在下面写的。何况, 可以在pycharm下编完代码, 转身打开网页的。
【1】 为什么要使用https, 因为pycharm支持使用jupyter, 这样既可以利用jupyter的优势,同时也可以不放弃pycharm的长处。