問題
環境はUbuntu18.04LTS、Miniconda3(Anaconda3でも同じです)、conda仮想環境にはpython3.6を指定。
CesiumJSをJupyter Notebookで使用したい。
PyPIで公開されている cesiumpy 0.3.3 を conda-buildでビルドして tar.bz2 パッケージにしてから、インストールした。
(結論として、ビルド・インストール手順は間違いなかった)
手順はざっくり以下のような感じ。
(base) ~$ conda create -n build python=3.6
(base) ~$ conda activate build
(build) ~$ conda install conda-build
(build) ~$ mkdir work
(build) ~$ cd work
(build) ~/work$ conda skeleton pypi cesiumpy
(build) ~/work$ conda build cesiumpy
(build) ~/work$ cp $CONDA_PREFIX/pkgs/cesiumpy-0.3.3-py36_0.tar.bz2 ./
(build) ~/work$ conda deactivate
(base) ~/work$ conda create -n myenv python=3.6
(base) ~/work$ conda activate myenv
(myenv) ~/work$ conda install geopy traitlets six scipy shapely
(myenv) ~/work$ conda install ./cesiumpy-0.3.3-py36_0.tar.bz2
(myenv) ~/work$ python -c "import cesiumpy"
/home/USERNAME/miniconda/envs/myenv/lib/python3.6/site-packages/cesiumpy/extension/geocode.py:12: UserWarning: Since July 2018 Google requires each request to have an API key. Pass a valid `api_key` to GoogleV3 geocoder to hide this warning. See https://developers.google.com/maps/documentation/geocoding/usage-and-billing
_GEOCODER = GoogleV3()
ModuleNotFoundErrorではなく、UserWarningが出ているので、インストールはうまくいっていると判断。
import cesiumpy
v = cesiumpy.Viewer()
v
何も表示されない。
去年、GitHubからcloneしたときは、そのまま使用できたのに・・・orz
原因
ブラウザの開発者ツールでコンソールを確認すると、Cesium.jsがダウンロードできないというエラーが発生している模様。
取り急ぎ、GitHubのIssuesを確認したところ、関連する内容がありました。
Example from README gives Google warning and shows nothing #77
Unable to pull resources from cesiumjs.org due to CORS #8050
対処
URLはbase.pyにハードコードされていました。
cesiumpyパッケージ内のbase.pyの_load_scripts()メソッドのURL(js変数とcss変数)を修正したら、表示されました。
修正前
@property
def _load_scripts(self):
js = """<script src="https://cesiumjs.org/Cesium/Build/Cesium/Cesium.js"></script>"""
css = """<link rel="stylesheet" href="https://cesiumjs.org/Cesium/Build/Cesium/Widgets/widgets.css" type="text/css">"""
return [js, css]
修正後
@property
def _load_scripts(self):
js = """<script src="https://cesium.com/downloads/cesiumjs/releases/1.62/Build/Cesium/Cesium.js"></script>"""
css = """<link rel="stylesheet" href="http://cesium.com/downloads/cesiumjs/releases/1.62/Build/Cesium/Widgets/widgets.css" type="text/css">"""
return [js, css]
2019/10/18 追記
修正対象のbase.pyファイルの場所は、findコマンドで検索してください。$ find $CONDA_PREFIX -name base.py | grep cesiumpy