为什么jupyterlab运行程序的时候会自动停止_气象人的JupyterLab

bca4865ae00234ada61009b36066e727.png

上两篇文章

Jupyterlab安装配置教程

Jupyter多用户配置

中讲了Jupyter的主要部署方法,老实说,对新手很不友好,我也不想再经历一次这样的过程,尤其是Basemap的安装。所以,咱直接打包个镜像吧。不得不说Docker真是个拯救了无数程序猿秀发的好工具。

Quick Start

如果你想快速部署,而没有时间看完教程的话,看这里就好。或者看Gitee上本项目的主页。

首先安装Docker,方法见Docker常用命令总结

docker pull registry.cn-shanghai.aliyuncs.com/bugatii100peagle/jupytercgmsabefcn:v1
cd ~
mkdir jupyterlab
mkdir jupyterlab/workspace
docker run --name jupytercgmsabefcn -d -p 8000:8888 -v `pwd`/jupyterlab:/workspace -w /workspace -e GRANT_SUDO=yes --user root registry.cn-shanghai.aliyuncs.com/bugatii100peagle/jupytercgmsabefcn jupyter-lab --no-browser --port=8888 --ip=0.0.0.0 --allow-root

预计安装时间4小时(博主使用家用WiFi,视网络环境时间可能有延长),其中安装Docker用 1~2 小时,拖取jupytercgmsabefcn镜像用2小时。run起来之后,浏览器打开http://IP:8080,密码是空密码,直接回车即可。

Tips

  1. 不要在jupyterlab直接挂在阿里云OSS,OSS擅长存储不擅长访问。
  2. jupyterlab/workspace是用于暂存的工作空间,在此文件夹下读写数据和作图都比较快速。
  3. jupyterlab下另建一个新文件夹用于挂载阿里云OSS或FTP,workspace下文件编写完成再归档至此OSS文件夹。既能保证数据不丢失,又能保证读写速度。

C 和 Grads 的插件

我的镜像是很久以前我就装好了的,拖取的是官方的 jupyter-science 已经预装好了python3 julia R 我后来又装了C Grads,至于怎么装的我忘了,不过机智的我打包了镜像。直接拖下来用就行。

【 2020-02-20 14:26:59】我想起来了,好像是在Jupyter-Docker-stacks上找的jupyter-datascience-notebook,我好像还把Scipy删掉了。

18a3d2d87cb153a13672eb17b46078f5.png
docker pull registry.cn-shanghai.aliyuncs.com/bugatii100peagle/jupytercgrads
docker run --name jupyter -d -p 8000:8888 --restart=always -v `pwd`/jupyterlab/workspace:/workspace -w /workspace -e GRANT_SUDO=yes --user root 127.0.0.1:5000/jupytercgrads jupyter-lab --no-browser --port=8888 --ip=0.0.0.0 --allow-root

安装运行参考我之前写的jupyterLab安装配置教程,运行界面如下

6721686443fd69cad9f84f983567ab76.png

气象绘图工具包 Metpy Siphon atmos

参考Meetpy Installation Guide和在Jupyter中安装Python包,docker exec -it jupyter bash进入镜像后,输入如下代码

python -m pip install metpy
python -m pip install siphon

atoms要手动安装,下载代码后再install

wget https://files.pythonhosted.org/packages/65/1b/9e08dbd6979877cb1d24b5b3ee607c91ece212b010b49715ca7443999e24/atmos-0.2.5.tar.gz
tar -xvf atmos-0.2.5.tar.gz
cd atmos-0.2.5
nano setup.py

修改片段

from setuptools import setup
from pip..req import parse_requirements
#修改片段,不然会发生报错 ModuleNotFoundError: No module named 'pip.req'
from setuptools import setup
from pip._internal.req import parse_requirements

保存退出再执行

python setup.py install

参考install quantopian时出现No module named pip.req的解决办法

地图支持包Basemap

conda update -n base conda
conda update -n base conda # 对,更新两次,直到不会再提示更新

更新这步都很费时间,保守估计两小时。为什么说是估计呢,因为后面我没熬住,睡着了。然后参考解决conda的“Solving environment: failed”问题和anaconda安装basemap运行如下代码。

conda config --set channel_priority flexible
conda install basemap

弹出如下信息即表示,已经找到basemap安装包,conda install basemap反而安装挺快,快到让我怀疑昨晚熬夜的两小时还失败了是不是幻觉。

The following NEW packages will be INSTALLED:basemap            conda-forge/linux-64::basemap-1.2.1-py37hd1be537_2geos               conda-forge/linux-64::geos-3.8.0-he1b5a44_0proj4              conda-forge/linux-64::proj4-5.2.0-he1b5a44_1006pyproj             conda-forge/linux-64::pyproj-1.9.6-py37h516909a_1002pyshp              conda-forge/noarch::pyshp-2.1.0-py_0

测试运行,会遇到basemap KeyError 'PROJ_LIB'解决办法,解决办法就是代码中指定目录运行。终端输入

whereis proj
# 输出:proj: /usr/share/proj /opt/conda/bin/proj

浏览器打开jupyter,新建.ipynb文件,输入

%matplotlib inline
import os
os.environ['PROJ_LIB'] = "/usr/share/proj"
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemapplt.figure(figsize=(8, 8))
m = Basemap(projection='ortho', resolution=None, lat_0=50, lon_0=-100)
m.bluemarble(scale=0.5);

参考数据科学 IPython 笔记本 8.16 地理数据和 Basemap无报错,并出现一个地球,即表示安装成功。

9e25859a8933807aabe5677b2ae69d68.png

basemap还挺大,装了2G左右吧。

dac15b65526660aff56fc7208d6343cd.png

Basemap 的继承者 Cartopy

Basemap 自2020年开始停止维护,所以,新的项目还是用新工具吧。

wget https://files.pythonhosted.org/packages/e5/92/fe8838fa8158931906dfc4f16c5c1436b3dd2daf83592645b179581403ad/Cartopy-0.17.0.tar.gz
tar zxvf Cartopy-0.17.0.tar.gz
cd Cartopy-0.17.0
python setup.py install

网不好的也可以尝试从百度网盘下载

链接:https://pan.baidu.com/s/1EOofzd9VcFgYTbpRhDf5pg
提取码:c60e

测试,浏览器打开jupyter输入以下代码,能出土没报错即可。

import cartopy.crs as ccrs
import matplotlib.pyplot as pltax = plt.axes(projection=ccrs.PlateCarree())
ax.coastlines()# Save the plot by calling plt.savefig() BEFORE plt.show()
# plt.savefig('coastlines.pdf')
# plt.savefig('coastlines.png')
plt.show()

c7d71396abc03d80997de20935daf282.png

Ncar的NCL_to_Python

参考Important letter regarding the future of NCL和PyNIO和PyNGL。但是PyNIO和PyNGL与basemap冲突,climate-dev mailing list archives,也提到对代码做了修改,反正这两货不能在一起,那就打包两个,幸好之前docker了镜像。

2e2cb79846024b92ae987c66689802c3.png

从刚安装号atmos的那个镜像开始,运行并进入镜像。

conda config --set channel_priority flexible
conda install xarray netcdf4 scipy pyngl pynio ncl

测试,浏览器打开jupyterlab,上传下面这个包,解压,打开,运行其中的文件,没报错,出图即可。

链接:https://pan.baidu.com/s/1lpBJTJHp466zbru9cKtoTg
提取码:8q3y

596e8fbd773d899199a443dfeb1d6aff.png

欧洲中心数据下载ecmwf-api

参考利用Python调用ECMWF欧洲中心API批量下载数据,python调用ECMWF欧洲中心api下载数据

python -m pip install ecmwf-api-client

测试,打开ipython,输入下方代码,没报错即可。

from ecmwfapi import ECMWFDataServer

Fortran支持jupyter-fortran-kernel

下载插件包上传之服务器解压安装。

链接:https://pan.baidu.com/s/1EAkEEVtmuOyB_VtzEAMqrQ
提取码:d4l6
复制这段内容后打开百度网盘手机App,操作更方便哦
apt install gfortran
unzip jupyter-fortran-kernel-master.zip
cd jupyter-fortran-kernel-master
python setup.py install
jupyter-kernelspec install fortran_spec/

打开浏览器,就可以看到Fortran的选项

ccd0657cccfca56dd1a12c2cd57eceba.png

点击打开,输入

program aa
implicit none
print*,'Hello World'
end

e5f04e7a2b740d3f9c5b082783a8d1e5.png

镜像包信息

jupytercgrads_metpy_siphon_atmos_basemap_ecmwf_fortran_cartopy

jupytercgrads_metpy_siphon_atmos_ncl_ecmwf_fortran

失败的方法安装地图支持包BaseMap

首先安装依赖包

python -m pip install geos
python -m pip install pip
python -m pip install Pillow

参考basemap安装教程,linux python 安装basemap

pip install pyproj

测试,bash输入以下命令没报错即可。

python -c 'import pyproj'

basemap的包真的好难下,我这里存了个百度网盘,需要的自行下载。

链接:https://pan.baidu.com/s/1hMhdVfVb1n709bxnSJCECg
提取码:a1cw

参考python番外(2)——Basemap安装 上传服务器到Docker环境,这里可以用workspace目录,反正装完删掉就可以。

tar zxvf basemap-1.1.0.tar.gz
cd basemap-1.0.7/geos-3.3.3/
export GEOS_DIR=/usr/local
./configure --prefix=$GEOS_DIR
make

能解压个二十分钟左右吧,慢慢等着,然后make报错。

return (ISNAN(x) && ISNAN(y) && ISNAN(z));^~~~~
../../../include/geos/geom/Coordinate.inl:39:10: note: suggested alternative: ‘SN                                     AN’
return (ISNAN(x) && ISNAN(y) && ISNAN(z));^~~~~SNAN
../../../include/geos/geom/Coordinate.inl: In member function ‘bool geos::geom::C                                     oordinate::equals3D(const geos::geom::Coordinate&) const’:
../../../include/geos/geom/Coordinate.inl:83:21: error: ‘ISNAN’ was not declared                                      in this scope((z == other.z)||(ISNAN(z) && ISNAN(other.z)));^~~~~
../../../include/geos/geom/Coordinate.inl:83:21: note: suggested alternative: ‘SN                                     AN’((z == other.z)||(ISNAN(z) && ISNAN(other.z)));^~~~~SNAN
make[4]: *** [Makefile:373: IndexedPointInAreaLocator.lo] Error 1
make[4]: Leaving directory '/workspace/basemap-1.1.0/geos-3.3.3/src/algorithm/loc                                     ate'
make[3]: *** [Makefile:392: all-recursive] Error 1
make[3]: Leaving directory '/workspace/basemap-1.1.0/geos-3.3.3/src/algorithm/loc                                     ate'
make[2]: *** [Makefile:444: all-recursive] Error 1
make[2]: Leaving directory '/workspace/basemap-1.1.0/geos-3.3.3/src/algorithm'
make[1]: *** [Makefile:476: all-recursive] Error 1
make[1]: Leaving directory '/workspace/basemap-1.1.0/geos-3.3.3/src'
make: *** [Makefile:368: all-recursive] Error

解决办法参考GEOS安装出错

cd include/geos/
nano platform.h

修改24行

/* Has isnan */
/* #undef HAVE_ISNAN */

改为

/* Has isnan */
#define HAVE_ISNAN 1

然后 不要configure 直接 make 然后 make install

make 也要个40多分钟吧

【 2020-02-18 0:23:56】 一个小时,反正也就只有等着。

【 2020-02-18 1:08:34】 又一个小时,我好想睡觉,但是不看他装完我睡不着。

【 2020-02-18 1:28:23】我好像想起来我折腾这玩意这么慢了,这是在OSS下,为了方便管理代码,我挂载了OSS盘做储存,OSS擅长存而不擅长高频访问,而编译make就是个高频的活动。

【 2020-02-18 1:39:44】脱离OSS目录重新configure nano platform.h make

【2020-02-18 1:44:01 】make 完毕,make install 不到30秒完毕。2/100*60=1.2,也就是说我花了两小时等一个1分20秒就能出的东西,还傻等了两小时。

但是我回到basemap文件夹下python setup.py install 时报错

In file included from src/_geoslib.c:248:0:
/usr/local/include/geos_c.h:149:22: note: expected ‘GEOSMessageHandler {aka void (*)(const char *)}’ but argument is of type ‘void (*)(char *, char *)’extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function,
···
src/_geoslib.c:5619:13: error: ‘PyThreadState {aka struct _ts}’ has no member named ‘exc_traceback’; did you mean ‘curexc_traceback’?tstate->exc_traceback = local_tb;^~~~~~~~~~~~~curexc_traceback
error: Command "gcc -pthread -B /opt/conda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I['/opt/conda/lib/python3.7/site-packages/numpy/core/include'] -I/opt/conda/lib/python3.7/site-packages/numpy/core/include -I/opt/conda/include/python3.7m -c src/_geoslib.c -o build/temp.linux-x86_64-3.7/src/_geoslib.o -MMD -MF build/temp.linux-x86_64-3.7/src/_geoslib.o.d" failed with exit status 1

参考 Python踩坑之路, Python 3.7 Build failure: error: ‘PyThreadState’ {aka ‘struct _ts’} has no member named ‘exc_type’; did you mean ‘curexc_type’? #11

pip install PyOpenGL PyOpenGL_accelerate
apt-get install python3-dev
apt-get install libevent-dev

当然都没有解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bfc是什么_全面分析总结BFC原理及实践

前言 经常在面试中被问到“如何清除浮动?”、“为什么 overflow: hidden 可以清除浮动?”等等比较基础的问题。虽然这些题目案在各种写面试题的文章中都有提供答案,但这种教科书式的问答肯定不是我们的目的,与其记住答案不如彻底掌…

学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...

Part one 截屏我们在使用电脑的过程中,有时候会使用截屏功能。AltCtrlA诶?怎么不行?原来这是QQ特有的快捷键,如果不登录QQ的话,是使用不了的。那么我们就只能先登录QQ,然后再一步步的操作。那在没网的情况下…

mysql从库执行delete停止_MySQL主库大表执行delete语句,Ctrl+C具体发生了什么分析...

MySQL主库大表执行delete语句,CtrlC具体发生了什么分析1、查看表结构localhost.qt>show create table doctor_stats_backup\G*************************** 1. row ***************************Table: doctor_stats_backupCreate Table: CREATE TABLE doctor_stat…

python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...

有时候,有些网页不方便在电脑或者手机QQ打开,比如:想创建一个微信活动页面,在电脑或者QQ打开会导致某些功能失效,页面错版等情况,为了避免出现这种情况,其实我们只需让它只能在微信打开就可以了…

我的世界服务器设置op显示,我的世界设置op权限 | 手游网游页游攻略大全

发布时间:2017-08-19导读:不少我的世界腐竹都会收留一些OP帮助自己管理服务器,那么如果想取消OP的权限该如何操作呢?下面小编就来教教大家如何取消OP权限. 问:我的世界如何取消OP权限? 答:/deop 用户名,就是取消OP,/op 用户名 ...标签:我的世界 问答帮…

python turtle画彩虹的代码_如何用python海龟库画彩虹

python生成的彩虹效果,大家可以参考:使用的python版本:3.7.0 ,以下为源代码:# rainbow.py from turtle import * from random import * def HSB2RGB(hues): hues hues * 3.59 #100转成359范围 rgb [0.0,0.0,0.0] i …

vsphere虚拟克隆虚拟服务器,vSphere实战攻略2:虚拟机模板与克隆

【IT168 专稿】 (接上篇)"模板"是VMware为虚拟机提供的一项功能,可以让用户在其中一台虚拟机的基础上,很方便的"派生"或"克隆"出多台虚拟机,这减轻了管理员的负担。1.1 创建模板虚拟机在使用模板之前&#xff…

java ee maven_针对新手的Java EE7和Maven项目–第6部分

java ee maven从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5部分 在上一篇文章(第5部分)中,我们发现了如何使用Arquillian(我们的EJB服务)进行单元…

windows系统git服务器启动,windowsServer服务器上搭建GIt服务器

十年河东,十年河西,莫欺少年穷学无止境,精益求精摸索了一天,终于把服务器端Git搭建完毕。记录下来,省的以后踩坑。如下:在官网搜索框中输入:download 搜索下载型选择为Java选择开发版然后下载下…

如何在黄瓜中进行后端测试

黄瓜是一种规范语言的执行框架。 它并不是要成为测试语言,而是用于创建测试自动化。 黄瓜最适合出现一些现实世界中的参与者互动并取得某种成果的情况。 当可以从用户的角度编写它时,它特别有用。 Given Sarah is a premium club member When Sarah lo…

云服务器 生物信息学,云服务器 生物信息学

云服务器 生物信息学 内容精选换一换挂载有NVMe SSD盘的Linux弹性云服务器(如P1型云服务器)发生故障时,需联系管理员通过异地重建的方式进行恢复,新建故障弹性云服务器。如果故障弹性云服务器在/etc/fstab中设置了NVMe SSD盘的开机自动挂载功能&#xff…

python图像转字符画_python图像处理-字符画风格图片

前言 字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了。下面的这些形状同样可以使…

react生命周期函数_如何优雅的消灭掉react生命周期函数

开源不易,感谢你的支持,❤ star concent^_^序言在react应用里,存在一个顶层组件,该组件的生命周期很长,除了人为的调用unmountComponentAtNode接口来卸载掉它和用户关闭掉浏览器tab页窗口,该顶层组件是不会…

jolokia_Hawtio和Jolokia的Hibernate统计

jolokia企业Java的很大一部分处理数据。 在企业设置中使用数据的所有不同方式中,仍然存在使用任何种类的O / R映射的行之有效且广泛教授的方法。 JPA标准使每个人都比较容易使用它,并且它也应该是可移植的。 但是,我们不要谈论迁移细节。 O /…

JVM垃圾收集和优化

总览 在对系统进行性能相关问题的故障排除时,内存优化是一个需要深入分析每个系统在内存中存储的内容,存储时间和访问模式的地方。 这篇文章是要在背景信息上进行注释,并在此工作中要注意一些要点,这些工作要专门针对基于Java的实…

redis desktop manager连不上redis_Redis安装教程

Ⅰ 简介Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings),散列(hashes&#…

c++如何将int数组中的值取出*号运算符_如何用动态规划巧妙解决 “双十一” 购物时的凑单问题?羊毛薅起来!!!...

点击上方“程序员大白”,选择“星标”公众号重磅干货,第一时间送达今年过去的 “双十一” ,你有薅到羊毛吗?每年的双十一,会有各种促销活动,比如 “满 300元减 80 元”。假如你女朋友的购物车中有 n 个(n &…

python操作界面_Python使用PyQt5的Designer工具创建UI界面

一、Designer-UI编辑器 Designer是pyqt5-tools带的工具,默认可以在Python安装目录下找到的。我的之前项目导入过pyqt5-tools,所以我直接全盘搜索到了。打开designer后,我们可以编辑我们想要的UI界面,下面是我编辑的测试界面&#…

python统计词频_Python统计四六级考试的词频

Python统计四六级考试的词频此文首发于公众号 「Python知识圈」, 欢迎直接去公众号查看阅读文本大概需要 4.6 分钟。今天是教师节,先祝天下所有老师教师节快乐,感谢您在我学生时代对我的谆谆教诲。现在是开学之初,风华正茂的青年才…

python爬虫数据可视化_适用于Python入门者的爬虫和数据可视化案例

本篇文章适用于Python小白的教程篇,如果有哪里不足欢迎指出来,希望对你帮助。 本篇文章用到的模块: requests,re,os,jieba,glob,json,lxml,pyecharts,heapq,collection 首先 本文我们的目的 抓取周杰伦的所有歌曲, 歌词&#xff0…