为什么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
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 siphonatoms要手動安裝,下載代碼后再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 ECMWFDataServerFortran支持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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改在路由器中显示的名称如何修改九联
- 下一篇: bfc是什么_全面分析总结BFC原理及实