Skip to content

Instantly share code, notes, and snippets.

@gghatano
Last active September 1, 2021 06:14
Show Gist options
  • Save gghatano/f7e6d5d7012a6cd27fb22d091d522327 to your computer and use it in GitHub Desktop.
Save gghatano/f7e6d5d7012a6cd27fb22d091d522327 to your computer and use it in GitHub Desktop.

(PWSCUP2021用) python+jupyter+pwscup2021 環境構築手順

注意

  • 本手順書で作成されるのは、PWSCUP2021サンプルコードのサンプル実行環境です
    • コンテストは他の環境で実行頂いても、全く問題ありません。
    • 不具合連絡等、お待ちしています。ただ、対応しない場合もあります。ご留意ください。
    • ご自身の判断・責任で、本環境をご利用ください。
    • 本コンテスト環境の不具合等が影響したいかなる結果について、PWSCUP運営委員会は責任を持ちません。

環境構築の前提

  • docker, docker-composeコマンドが利用できる
  • 8888番ポートが空いている
    • ホストの8888とコンテナの8888とマッピングするため
    • Win10の場合のポート開放手順:
    • ファイヤウォールとネットワークの保護 > 詳細設定 > 受信の規則 > 新しい規則 > ポート > TCP、特定のポートで8888ポート > 接続を許可
  • インターネットに接続できる
    • できない場合は、インターネットがつながる環境でbuildしたコンテナを持ち込む
    • proxyの設定が必要な場合は検索してこのような記事を参考にする

環境構築

  • 以下のコマンドを実行して、pwscupリポジトリ、python、jupyter notebookが実行できるコンテナを起動する
$ docker-compose up -d --build 
  • jupyterで新規notebookを開く
    • ブラウザで、localhost:8888に接続する
    • jupyterで New > Python3 として、notebookを開く
    • ホストのディレクトリは、コンテナの/opt/python/jupyterのマッピングしてある
    • ホストのディレクトリにデータを配置すれば、jupyterから色々見られる

PWSCUP2021サンプルコードの実行

  • localhost:8888 > pwscup2021 に移動
  • 新規notebook立ちあげ
  • ! bash test-2anonymize.sh
  • ↑で、匿名加工・評価まで実行できる Csv/pre-anony-xかd.csv に出力される
  • test-2anonymize.sh の、各種パラメータを編集すると、出力が変わる
version: "3"
services:
pwscup-jupyter:
build: .
ports:
- "8888:8888"
volumes:
- type: bind
source: .
target: /opt/python/jupyter
tty: true
FROM centos:7
ENV PYTHONPATH "/opt/python/library"
ENV LANG en_US.utf8
LABEL maintainer="PWSCUP_ADMIN (Twitter: @PWScup_Admin)"
ARG version="3.7.3"
COPY ./jupyter_notebook_config.py /tmp/jupyter_notebook_config.py
RUN set -x && \
yum -y update && \
yum install -y epel-release && \
yum install -y gcc gcc-c++ bzip2-devel libffi-devel make git && \
yum install -y openssl-devel wget sqlite-devel xz-devel liblzma-dev && \
yum install -y zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel && \
yum install -y sqlite-devel readline-devel tk-devel gdbm-devel libuuid-devel && \
yum clean all
RUN wget https://www.python.org/ftp/python/${version}/Python-${version}.tgz -O /tmp/python.tgz && \
tar xzf /tmp/python.tgz -C /tmp && \
cd /tmp/Python-${version} && \
./configure --enable-optimizations && \
make altinstall && \
ln -s /usr/local/bin/python3.7 /usr/bin/python3 && \
ln -s /usr/local/bin/pip3.7 /usr/bin/pip3 && \
pip3 install -U pip && \
pip3 install matplotlib numpy && \
pip3 install pandas seaborn scikit-learn plotly statsmodels category-encoders && \
pip3 install jupyter jupyter-contrib-nbextensions jupyter_nbextensions_configurator && \
mkdir -p /opt/python/library && \
mkdir -p /opt/python/jupyter && \
mkdir ~/.jupyter && \
mv /tmp/jupyter_notebook_config.py ~/.jupyter && \
rm /tmp/python.tgz
RUN mkdir /opt/python/jupyter/share
RUN cd /opt/python/jupyter && \
git clone https://github.com/kikn88/pwscup2021 && \
cd ./pwscup2021 && \
bash ./test-0config.sh && \
bash ./test-1setup.sh && \
bash ./test-2anonymize.sh
EXPOSE 8888
CMD ["jupyter", "notebook", "--allow-root", "--NotebookApp.token=''", "--no-browser"]
c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.notebook_dir = '/opt/python/jupyter'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment