コンテンツへスキップ

python、anacondaで仮想環境を作る理由と方法を書きました。ほぼ日記です。

私と同じような初心者向けにpython、anacondaで仮想環境を作る方法を書きました。ほぼ日記です。(2019/11/13)

注: winndows上でlinaxやりたい、というようなものでは無い気がします。

conda 4.7.12

目次

  • なぜ仮想環境を作るのか
  • anacondaで仮想環境を作る方法
  • 参考
  • 感想

仮想環境をなぜ作るのか

頻度は違えど、 ライブラリ等は日々更新されています。

例えば、自分がRequestsというライブラリを使っているとします。Requestsというのは、webページから情報をもらってくるソフトが入っているサードパーティライブラリで、webスクレイピングするときなどに使われます。長期間使用していると、Webページの構造(アバウトな話)もRequestsも更新されていくことが予想されますが、一部のページでは昔のままで使用していることもあります。新しいバージョンでは目的のページから情報がもらえない、しかしやらなければならない、そいうとき、大変困ります。

そんな時に、かつて使っていた状態のままで残していると便利なわけです。

というようなことを先日参加したPython boot campで聞きました。そこで、研究で使っているezdxfを見てみたところ、最新版が更新されていて危機感を感じました。 外部で勉強するのって大事ですね。

研究で使用しているDXF自動描画プログラムが使えなくなるととてつもなく困るので、仮想環境を作成しておきたいと思います。

Anacondaで仮想環境を作る方法

私はanacondaを使用しているので、anacondaでやります。下記はanaconda promptで作業しています。

condaのバージョンが新しくなっていたのでそれもアップデートしています。

まずは一応、現在自分の環境に入っているパッケージを確認します。

>conda list

 current version: 4.7.11
  latest version: 4.7.12
  ~沢山のパッケージ~
ezdxf                     0.9                        py_0    conda-forge

次に現在の環境を確認します。私が仮想環境を作るのは初めてなのでbaseのみでした。

>conda info -e
# conda environments:
#
base                  *  C:\ProgramData\Anaconda3

仮想環境を作成します。環境名はわかりやすい方が良いです(dxf_generatorにした想定です)。なお、環境にあたらしくpythohnをインストールしています。

>conda create -n [環境名] python

起動します。

>conda activate [環境名]

すると、左端のところに環境名が表示されます。

(dxf_generator) C:\Users\user>conda list
# packages in environment at C:\Users\user\.conda\envs\dxf_generator:
#
# Name                    Version                   Build  Channel
ca-certificates           2019.9.11            hecc5488_0    conda-forge
certifi                   2019.9.11                py38_0    conda-forge
openssl                   1.1.1d               hfa6e2cd_0    conda-forge
pip                       19.3.1                   py38_0    conda-forge
python                    3.8.0                hc9e8b01_3    conda-forge
setuptools                41.6.0                   py38_1    conda-forge
sqlite                    3.30.1               hfa6e2cd_0    conda-forge
vc                        14.1                 h0510ff6_4
vs2015_runtime            14.16.27012          hf0eaf9b_0
wheel                     0.33.6                   py38_0    conda-forge
wincertstore              0.2                   py38_1003    conda-forge

numpyなど、使用する上で必要な物を入れていきます。

>conda install [パッケージ名]
>conda install [パッケージ名] ==[バージョン]

仮想環境を終了する場合は

>conda deactivate

参考

【初心者向け】Anacondaで仮想環境を作ってみる

感想

私はezdxfというパッケージを使用する必要がありましたが、一度最新版を入れて実行してみたところ思ったようなデータが生成できませんでした。そこでもともと使っていた0.9を入れ直したところちゃんと動いたので安心です。

皆様もお気を付けください。

python boot campに参加したので、内容、スケジュール、感想を書きました。また、pythonの実装方法について調べたこともまとめています。

2019/11/2にpython boot campに参加してきました。

目次

  • python boot camp とは
  • 内容
  • あとで調べたこと
  • 感想

python boot camp とは

python boot camp

PyCon JPではこれまでも年に1回東京で開催されるPyCon JPイベントでPythonを学べるチュートリアル講座を開催してきました。 今回は、以下のような人たちにPythonを知ってもらえる機会を提供できたらという思いで、Python Boot Camp(略してPyCamp)を企画しました。

python boot camp -connpass

主催は一般社団法人PyCon JP。

Python boot camp -PyCon JP

内容

スケジュール (全体13:00~17:00)

  • 13:00~15:00 文法、データ型
  • 15:10~16:50 ファイル入出力とモジュール、スクレイピング
  • 16:50~ アンケートと写真撮影

下記参照のチュートリアルのうち、いくらか飛ばしてさくさく進めて行きました。

Python Boot Camp Text 2016.04.28 ドキュメント

あとで調べたこと

質疑応答の中で「cで実装されたpythonとjavaで実装されたpythonと、あとmicropythonとか、pythonで実装されたpythonがあって」というようなことを言っていて「!!??」となったので調べました。

pythonには実装形式が異なる様々なバリエーションがあるようです。

Cpython: C言語で実装されたPython

標準の処理系で、pythonの仕様を表したソフトウェアと言えます。計算はあまり早くありません。

Jython: Javaで実装されたPython

JVM(Java Virtual Machine)上に実装されたJavaなどの言語のメソッドが簡単に使えます。 ちなみに、Javaは仮想マシンJVM上で動きます。これによってOSに依存せず動きます。

ただし、Python3には対応してないみたいです。 =>News -Jython

IronPython: C#で実装されたPython

.NET FrameworkとPythonライブラリを使用でき、他の.NET言語はPythonコードを使用できます。

IronPython2.7はpython2.7対応。python3系対応バージョンは開発中らしいです。

PyPy: Pythonで実装されたPython

Python言語(2.7.13および3.6.9)で実装された言語。Just-in-Timeコンパイラによって、大規模なPythonコードを省スペースで高速に実行できます。

micropython: マイコン上で動くように作られたpython

マイクロコントローラー上および制約された環境で実行するように最適化された言語です。python3で実装されています。非常にコンパクトです。

Cython: pythonっぽいコンパイラ言語

Pythonプログラミング言語と拡張Cythonプログラミング言語の両方に最適な、言語兼コンパイラーです。Python自体と同じくらい簡単に、Python用のC拡張機能を記述できます。

Cythonの処理系ではソースファイルをCのコードに変換し、コンパイルするとPythonの拡張モジュールになるようにして出力します。

所感

pythonはグルー(のり)言語と言われているように、様々な言語と連携して使用することを目指して開発されているという印象です。しかし、python3系に対応しきれていないものが複数あり、python2からpython3になった当時の衝撃の鱗片を感じました。

.NETやマイコンでも使えるというのは興味があるので、ぼちぼち勉強してみたいなと思います。

参考

次に読みたい

[Cython ―Cとの融合によるPythonの高速化] O'Reilly Japan Kurt W. Smith (著), 中田 秀基 (監修), 長尾 高弘  (翻訳)

[退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング] O'Reilly Japan Al Sweigart  (著), 相川 愛三 (翻訳)

Automate the Boring Stuff with Python

[ハイパフォーマンスPython] O'Reilly Japan Micha Gorelick (著), Ian Ozsvald (著), 相川 愛三 (翻訳)

感想

事前に記法はprogateでやった後、科学技術計算の本を読み終えていた。そのため、 参加する前に基本文法 モジュールのインポートやフロー制御は分かっていた。 また、DXFデータ(CAD用のデータ)の出力を自動化することができていた。(しばらくしたらブログ化する予定)

前半の内容はほぼ知っていたことだったが、集合setやタプルの使用シーンなどの細かい部分を改めて勉強することは有益だった。また、モジュールをインストールする環境を仮想環境venvにしておくことで、モジュールのバージョンが上がっても過去のモジュールが使用でき、過去のモジュールでしか上手く使用できないようなAPIを上手く使える、というような知恵も得られた。また、CpythonやJython, micropythonなどのように様々な方法で実装されたバージョンがあることが分かり、実装方法に興味がわいた。

エラーが出てもすぐに聞けるため、時間的なコスパは移動時間を含めてもかなり良かったのでは無いかと思う。また、参加やのほとんどはある程度pythonを自学していたり多言語を触ったりしたことがある人が多かったためか、作業中よりも質疑に対する回答が大変ためになった。全体的に、学びが多い勉強会だった。

この場で感謝申し上げます。ありがとうございました。