欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的这篇文章主要介绍了 为什么jupyterlab运行程序的时候会自动停止_气象人的JupyterLab 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

上两篇文章

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

  • 不要在jupyterlab直接挂在阿里云OSS,OSS擅长存储不擅长访问。
  • jupyterlab/workspace是用于暂存的工作空间,在此文件夹下读写数据和作图都比较快速。
  • 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删掉了。

    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安装配置教程,运行界面如下

    气象绘图工具包 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无报错,并出现一个地球,即表示安装成功。

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

    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()

    Ncar的NCL_to_Python

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

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

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

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

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

    欧洲中心数据下载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的选项

    点击打开,输入

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

    镜像包信息

    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

    当然都没有解决。

    创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

    总结

    以上是生活随笔为你收集整理的为什么jupyterlab运行程序的时候会自动停止_气象人的JupyterLab的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。