Python配置Jupyter环境
安装Jupyter及插件
pip3 install jupyter
pip3 install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip3 install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
启动notebook,查看是否出现Nbextensions选项卡,如果未出现,检查notebook和其他依赖的版本问题,尝试更换版本。
配置界面样式
默认的jupyter前端样式不太好看,可以自定义CSS修改,CSS样式文件路径在当前用户目录/.jupyter/custom/custom.css,个人配置如下。
/* Body */
/* #notebook-container {
width: 90%
} */
/* Markdown */
div#notebook {
font-family: Consolas, 'Courier New', monospace;
line-height: 20px;
-webkit-font-smoothing: antialiased !important;
}
/* Markdown - h2 */
div#notebook h2 {
color: #007aff;
}
div#notebook h1 {
color: #de143d;
font-size: xx-large;
font-weight: bold;
}
/* Markdown - quote */
div#notebook blockquote {
background-color: #f8f8f8;
color: #505050;
padding: 8.5px;
margin: 0.5em -0.5em 0.5em -0.4em;
}
/* Markdown - code in paragraph */
div#notebook p code,
div#notebook li code {
font-size: 1em !important;
color: #111111;
border: 0.5px solid #cfcfcf;
border-radius: 2px;
background-color: #f7f7f7;
padding: .1em .2em;
margin: 0px 2px;
}
/* Markdown - code */
div.text_cell_render pre {
border: 2px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
padding: 8.5px;
margin: 0.5em -0.5em 0.5em -0.4em;
}
div.text_cell_render code {
background: #f7f7f7;
}
/* Code */
div.CodeMirror pre {
font-style: italic;
-webkit-font-smoothing: antialiased !important;
}
/* Code - comment */
span.cm-comment {
font-family: Consolas, 'Courier New', monospace !important;
font-style: italic !important;
}
.cm-s-ipython .CodeMirror-cursor {
border-left: 2px solid #ff711a !important;
color: red;
}
.cm-s-ipython span.cm-comment {
color: #8d8d8d;
font-style: italic;
}
.cm-s-ipython span.cm-atom {
color: #055be0;
}
.cm-s-ipython span.cm-number {
color: #ff8132;
}
.cm-s-ipython span.cm-property {
color: #303030;
}
.cm-s-ipython span.cm-attribute {
color: #303030;
}
.cm-s-ipython span.cm-keyword {
color: #713bc5;
font-weight: 600;
}
div.output pre{
font-size: 12pt;
line-height: 20px;
font-weight: normal;
font-style: normal;
}
.CodeMirror-lines {
padding-right: 5em;
line-height: 23px;
font-size: medium;
}
.cm-s-ipython span.cm-string {
color: #009e07;
}
.cm-s-ipython span.cm-meta {
color: #aa22ff;
}
.cm-s-ipython span.cm-operator {
color: #055be0;
font-weight: 700;
}
.cm-s-ipython span.cm-builtin {
color: #e22978;
}
.cm-s-ipython span.cm-variable {
color: #303030;
}
.cm-s-ipython span.cm-variable-2 {
color: #de143d;
}
.cm-s-ipython span.cm-variable-3 {
color: #aa22ff;
}
.cm-s-ipython span.cm-def {
color: #e22978;
font-size: medium;
}
.cm-s-ipython span.cm-error {
background: rgba(191, 97, 106, .40);
}
.cm-s-ipython span.cm-tag {
color: #e22978;
font-size: medium;
}
.cm-s-ipython span.cm-link {
color: #ff8132;
font-size: medium;
}
.cm-s-ipython span.cm-storage {
color: #055be0;
}
.cm-s-ipython span.cm-entity {
color: #e22978;
}
.cm-s-ipython span.cm-quote {
color: #009e07;
}
div.CodeMirror span.CodeMirror-matchingbracket {
color: #1c1c1c;
background-color: rgba(30, 112, 199, .30);
}
div.CodeMirror span.CodeMirror-nonmatchingbracket {
color: #1c1c1c;
background: rgba(191, 97, 106, .40) !important;
}
.cm-s-default .cm-hr {
color: #055be0;
}
* {
font-weight: 500;
font-family: Consolas, 'Courier New', monospace;
font-style: italic;
}
.dataframe thead th {
color: #ff711a;
font-size: medium;
}
/* .dataframe tbody tr th:only-of-type {
color: #aa22ff;
font-size: medium;
} */
.dataframe tbody tr th{
color: #aa22ff;
font-size: medium;
}
.dataframe tbody td {
font-style: italic;
font-size: 11pt;
font-weight: 500;
}
div#pager pre {
font-size: 12pt;
font-style: normal;
}
.ipython_tooltip .tooltiptext pre {
font-size: 12pt;
font-style: normal;
}
p {
font-size: medium;
}
.list_container{
font-weight: bold;
font-size: 12pt;
}
.navbar-default .navbar-nav > li > a{
font-weight: bold;
font-size: 14pt;
}
.dropdown-menu > li > a{
font-size: 12pt;
font-weight: bold;
line-height: 20px;
}
.MathJax span{
font-size: 16pt;
}
li{
font-size: 13pt;
font-weight: 800;
/* color: aquamarine; */
}
.text_cell.rendered .rendered_html tr, .text_cell.rendered .rendered_html th, .text_cell.rendered .rendered_html td{
font-size: large;
}
配置密码及远程访问
jupyter notebook --generate-config
生成的配置文件在当前用户目录/.jupyter目录下
生成密码
(jupyter) D:\prog\Python3.8.5\pyvenvs\spider>ipython
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.6.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from notebook.auth import passwd
In [2]: passwd('123456'.encode())
Out[2]: 'argon2:$argon2id$v=19$m=10240,t=10,p=8$0iALQiYDUNgl0YRei3AhIg$OmCHc5zntKIpc2LdKCr/DM+QNUo3OIoWhStcXdvZtw4'
c.NotebookApp.allow_remote_access = True
c.NotebookApp.allow_root = True
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.notebook_dir = 'notebook启动目录'
c.NotebookApp.password = '生成的密码'
c.NotebookApp.port = 8888
推荐插件
- Autopep8
- Code prettify
- Codefolding
- Codefolding in Editor
- contrib_nbextensions_help_item
- ExecuteTime
- Jupyter-js-widgets-extension
- Hinterland
- Live Markdown Preview
- Nbextensions edit menu item
- Nbextensions dashboard tab
- Table of Contents (2)
- Variable Inspector
报错解决
- notebook版本问题
ModuleNotFoundError: No module named ‘notebook.base’
本人安装的notebook是7.0.6版本,报错,降低版本
pip install notebook==6.5.6