LoginSignup
3
5

More than 1 year has passed since last update.

Windowsでもcondaを使わずにRDKitを快適に利用する

Last updated at Posted at 2021-06-19

はじめに

RDkit の 2021.3.2.3 が pipでインストールできるようになり、有償化したAnacondaから解放されると喜んだ人もいるかと思う。

しか~し、残念ながら我らが Windows では、 pip install rdkit-pypiしても、ERROR: No matching distribution found for rdkit-pypiと表示され、インストールできないのであ~る。

そこで今回はWindowsでも快適に pip 版の RDkit を使う方法を説明する。

方法

ネタバラシだが、LinuxベースのDockerイメージに RDKitをpipでインストールし、それを使うというものである。

環境

  • Windows 10
  • Docker
  • python 3.8
  • RDKit 2021.3.2.3

手順

前提として、Dockerはインストールされているものとする。

Dockerイメージの作成

まずは requirements.txt に、RDkitやインストールしたいライブラリを記載しよう。

requirements.txt
rdkit-pypi==2021.3.2.3

続いてDockerファイルを用意しよう

FROM python:3.8

WORKDIR /tmp
ADD requirements.txt /tmp
RUN pip install -r requirements.txt
WORKDIR /test

思考錯誤して分かったのだが、pip 用の RDKit が用意されている Python のバージョンが 3.8 であることに注意しよう。

続いて requirements.txt、Dockerfile のある場所で以下のコマンドを実行し、Dockerイメージを作成しよう

docker build . -t <タグ名> -f Dockerfile

これでRDkitがインストールされたLinuxベースのDockerイメージができる。

Dockerのコンテナの起動

続いてDockerコンテナを起動しよう

docker run -it -d --name <コンテナ名> --mount type=bind,src=<アプリケーション開発を行っているフォルダ>,target=/test <タグ名> bash

コンテナ名は適宜に指定してほしい。

Dockerコンテナにbashで接続

あとはアプリケーション開発を行っているフォルダに移動し、コンテナに bash で接続しよう。

docker exec -it <コンテナ名> bash
root@ed5354c38390:/test# 

すると、アプリケーションの開発を行っているフォルダがマウントされており、RDkitがインストールされたpython環境をあたかもローカルのように利用できるのだ。

さらに工夫すれば、Windowsで開発したアプリをフォルダ毎、Dockerに追加し、そのDockerイメージをDockerリポジトリに登録し、本番環境にあっという間にディプロイ、な~んてこともできてしまうのだ。

こういう体験をすると、Dockerが如何に便利かが良く分かる。

補足

本記事は、VSCode等でRDkitのアプリケーションを開発するケースを想定したが、JupterLabで解析したりモデル作りたい!という場合は、上の手順に以下を追加すればできるだろう。(試してないけど)

  1. 「Dockerイメージの作成」の requirements.txt に jupyterlab を追加する。
  2. 「Dockerのコンテナの起動」の際に -pオプションでローカルポートとコンテナ内部ポートを指定する。
  3. 「Dockerコンテナにbashで接続」した後、https://qiita.com/RayDoe/items/e1ec21c63a15adb1a061 を参考にJupyterLabを起動する。その際ポートは、2で指定したコンテナ内部ポートを指定して起動する。
  4. ローカルのブラウザより、3で起動したJupyterLabのURL、2で指定したローカルポートを指定して接続する。
3
5
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
3
5