LoginSignup
0
0

More than 1 year has passed since last update.

julia+pyenv+poetry環境の構築

Posted at

はじめに

最近、科学技術計算などで注目を集めているプログラミング言語としてJuliaがあります。
JuliaはPythonのように書きやすく、Cのような実行速度を持つ言語としてデザインされています。
Pythonに慣れ親しんだ方であれば、ほとんど学習コストも必要なく習得することが可能です。
今回は学習するための環境をdockerを用いて作成しました。
julia+Pythonの環境をdockerで作るとなると、jupyter/datascience-notebookが一般的です。
もちろんこれでもよいのですが、pyenvによるPythonのバージョン管理とPoetryによるライブラリ管理を行いたかったので自分で用意しました。
特にこだわりがなければ上記のイメージをpullしてくるのが最速です。

中身

用意したdockerfileは次の通りです。
juliaのイメージをもとにpyenvをinstallしました。poetryは別枠でinstallしています。

dockerfile
FROM julia:1.8.5
# installするpythonのバージョンを指定
ARG PYTHON_VERSION="3.9.16"
ENV TZ=Asia/Tokyo
RUN apt-get update -y \
    && apt-get install -y \
    make \
    build-essential \
    libssl-dev \
    zlib1g-dev \
    libbz2-dev \
    libreadline-dev \
    libsqlite3-dev \
    wget \
    curl \
    llvm \
    libncurses5-dev \
    libncursesw5-dev \
    xz-utils \
    tk-dev \
    libffi-dev \
    liblzma-dev \
    git \
    vim 

# pyenvのinstall 
ENV HOME /root
ENV PYENV_ROOT $HOME/.pyenv
ENV PATH $PYENV_ROOT/bin:$PATH
RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv
RUN echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc && \
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc && \
    echo 'eval "$(pyenv init --path)"' >> ~/.bashrc 
RUN eval "$(pyenv init --path)"
# pyenvによってPythonをinstallし、globalで認識するように設定
RUN pyenv install $PYTHON_VERSION && \
    pyenv global $PYTHON_VERSION

筆者は環境構築をvscodeのdevcontainerを通して行うので、poetryのinstall用にshも用意しました。

postCreateCommand.sh
#!/bin/bash
# poetryのinstall
pip install --upgrade pip
pip install poetry
# poetryによるライブラリのinstall
poetry config virtualenvs.create false
poetry install --no-root

devcontainer用の設定ファイルは次の通りです。

devcontainer.json
{
    "name": "dev-container2",
    "dockerFile": "../dockerfile",
    "postCreateCommand": "/bin/bash ./postCreateCommand.sh",
    "extensions": [
		"ms-python.python",
		"ms-python.vscode-pylance",
		"ms-python.black-formatter",
		"njpwerner.autodocstring",
		"mosapride.zenkaku",
		"oderwat.indent-rainbow",
		"christian-kohler.path-intellisense",
		"0h7z.vscode-julia-format",
		"julialang.language-julia"
	],
}

さいごに

最近マイブームのdevcontainerを使ってJulia+Pythonの環境構築を行いました。
jupyter/datascience-notebookはconodaベースなのが気に食わなかったので使いませんでしたが、こだわりがなければそっちでよいかと思います。
PythonとJuliaを組み合わせることで、大量のデータを効率よく処理できるようになると期待されるので筆者も勉強しています。
皆さんもこの機会にJuliaの世界に入門されてはいかがでしょうか。
Pythonにはない高速の世界があなたを待っています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0