pythonnetが動く環境を構築
最終的にやりたいこと
【Qiita】Pythonから.NETを呼び出す方法とついでにその逆も
まず pip install が上手くいかない
C#でSeleniumを制御するプログラムを書いて、それをPythonで制御する環境を作りたいと思い、
【Git Hub】github.com/pythonnet/pythonnet
をPCに導入しようとしたのですが、
1 2 3 4 5 6 7 8 9 10 11 12 |
% pip install pythonnet Collecting pythonnet Using cached https://files.pythonhosted.org/packages/4a/0a/5964a5a1fdf207fab8e718edd1f8d3578e0681577fe9abe0d9006f9718c2/pythonnet-2.4.0.tar.gz Building wheels for collected packages: pythonnet Building wheel for pythonnet (setup.py) ... error ERROR: Command errored out with exit status 1: 〜省略〜 error: option --single-version-externally-managed not recognized ---------------------------------------- /private/var/folders/4c/prz_dt794mb388lchggvsw5m0000gp/T/pip-record-_lkos68u/install-record.txt --single-version-externally-managed --compile Check the logs for full command output. |
というエラーから抜け出せなかったのでその時の備忘録。
Pythonのバーションを変えたり、足りていななさそうなパッケージを足したり色々試しても解決せず、最終的に完成したDocker imageをpullすることにしました。
Docker で解決
Docker のいいところは、環境に依存しないというところ。
ということで、Macに pythonnet を直入れするのではなく、pythonnetパッケージがDocker imageにJupyter notebookを入れる方向に方針転換。
イメージの作成からコンテナ起動まで
【Docker Hub】pythonnetが入っているDocker image
python3系がいいので
1 |
docker pull pythonnet/pythonnet:python3.5-mono4.8.0-pythonnet2.3.0 |
でイメージをpullし
1 2 3 4 |
[debonki] % docker images REPOSITORY TAG IMAGE ID CREATED SIZE pythonnet/pythonnet python3.5-mono4.8.0-pythonnet2.3.0 7c287c4b2387 2 years ago 1.32GB [debonki] % docker run -it --name MYCONTAINER -p 8001:8000 -v /Users:/home pythonnet/pythonnet:python3.5-mono4.8.0-pythonnet2.3.0 bash |
docker imageを確認し、コンテナを作成します。
RUNする時に、ブラウザからJupyter notebookを開きたいので、8001ポートを開けておきます。
Docker上でJupyter notebookを動かす
コンテナが起動したら、
1 |
docker exec -it MYCONTAINER bash |
でコンテナの中に入ります。コンテナの中に入ってしまえば、あとはpipコマンドが使えるので楽勝
1 2 |
root@daedacc4d03f:/# pip install jupyterlab root@daedacc4d03f:/# jupyter notebook --port 8000 --ip=0.0.0.0 --allow-root |
で jupyter を起動します。
Jupyter起動時にポートを開けて外からアクセスできるようにする必要があります。
8001番ポートが空いているので、このポートからアクセスすれば、Jupyterが使えるようになります。
「clr」がインポートできれば、PythonからC#のプログラムを読み込む準備ができました。
コメントを残す