Python学習【365日チャレンジ!】135日目のマスターU(@Udemy11)です。
久しぶりに朝から釣りにいって、なんとか1匹ゲットすることができました。
堤防は人がいっぱいだったので、テトラからルアーを投げていたのですが、周りで釣れている様子もない中、1匹だけでも釣ることができたので、ラッキーでした。
早速、津本式血抜きをして、冷蔵庫で熟成中です。
それでは、今日もPython学習を始めましょう。
昨日の復習
昨日は、ロギングでSMTPHandler
を使ってE-mailを送信する方法ついて学習しました。
ロガーを生成して、ハンドラーでメール送信に必要なデータをまとめてロガーに渡してメール送信しました。
ただ、ログが発生するたびにメール送信していたのでは、システムに負担をかけたり、メールが大量になってしまうため、ログ解析ツールにログを渡して、解析したデータをツールからメール送信するのが通常のやり方ということでした。
詳しくは昨日の記事をごらんください。
今日は、プログラマーとして、Pythonでのプログラム開発には欠かすことのできないvirtualenv
について学習します。
virtualenvとは
virtualenvとは
自分が使っているPythonの環境ではない環境で作業をする必要が出てきたときに、Python環境を改めてインストールすることなくPythonの仮想環境を生成し、通常使っている開発環境に変更を加えることなく他のプロジェクトの開発を行うことができます。
たとえば、自分の使っている環境に入れたくないサードパーティーライブラリをインストールしなければならないときなどは、virtualenv
を使って新しい開発環境を整えて、仮想環境で作業することができます。
virtualenvのインストール
いつもなら、Pythonistaを使ってコードを実行していますが、今回の学習はPythonistaではなく、Pycharmを使ってのやり方を紹介していきます。
virtualenv
はサードパーティーライブラリなので、インストールが必要です。
まずは、pip
を使ってvirtualenv
をインストールします。
ターミナルを使って次のpipコマンドを実行します。
pip install virtualenv
インストールが完了すれば、Pycharmで仮想環境を作成していきます。
Python2.7の環境を作る
普段の環境は、Python3.7なので、今回はPython2.7の環境を作成してみます。
PycharmメニューからPreferencesを選びます。
左のメニューから【Project:フォルダ名】→【Project Interpreter】を選択し、右上の歯車マークをクリックします。
表示される画面の左メニューで【Virtualenv Environment】が選択され、【New envionment】にチェックが入っているのを確認し、【Base interpreter】から【/user/bin/Python2.7】を選び、右下の【OK】をクリックします。
仮想環境の作成が始まり、下記のダイアログが表示されます。
少し時間が経てば仮想環境の作成が完了します。
作成が完了するとPreferencesの画面が表示され、【Base interpreter】のプルダウンリストにPython2.7の環境ができあがっているのがわかります。
この画面で、【Project interpreter】にPython2.7を選択すると、デフォルトの作業環境がPython2.7になってしまうので、このPreferencesでは、Python3.7のままにしておきます。
Python2.7を使う
Python2.7を使う仮想環境ができたので、実際にPython2.7を使ってみます。
使うPythonファイルは私がこれまで使っていた【lesson.py】で【Configuration】を変更していきます。
Pycharmの画面右上のConfigurasionボタンから【Edit Configurations】を選びます。
左メニューで【lesson1】(名前をlesson1にしている)を選択して、【Python interpreter】からPython2.7を選び、【OK】をクリック。
これで【lesson.py】は、Python2.7で実行されます。
print出力で試す
Python2.7とPython3.7では、コードの記述ルールが変更されています。
違いが簡単にわかるのが、print
出力でので、print
出力で試してみます。
Python2.7
Python2.7では、print
出力に、parenthesesの丸括弧を使いませんので、print "Hello World!"
と記述して実行すれば、コンソールにきちんとHello World!
が出力されます。
次に、InterpreterをPython3.7に戻してこのコードを実行してみます。
Python3.7
Python3.7では、print
出力には、parenthesesの丸括弧が必要ですので、エラーが表示されています。
続いて、ターミナルでも試してみます。
ターミナルで試す
作成した仮想環境は、私の環境では【/Users/bigmacpro/PycharmProjects/python_programming/venv/】に作成されています。
まずはターミナルでそのディレクトリにあるPython2.7の仮想環境を使えるようにするために、次のコマンドを実行します。
souce venv/bin/activate
実行すると、先頭に(venv)
が追加されるので、コマンドで【lesson.py】を実行します。
Python2.7の仮想環境で実行されているので、きちんとprint
出力が実行されます。
次に、元のPython3.7の環境に戻しますので、次のコマンドを実行します。
deactivate
このコマンドを実行すると、先頭に表示されていた(venv)
がなくなりますので、先程と同様に、コマンドで【lesson.py】を実行します。
プログラマーには必須
virtualenv
は、私のように、Pythonを学習し始めた人にはあまり必要がないのかもしれませんが、これからプログラマーを目指して、ガンガン仕事を受注したい人には必須のライブラリです。
クライアントから仕事を請け負う時に、すでに使っている自分の作業環境で開発すると運用環境でバグが発生したり、自分の環境がPython3なのに、Python2の環境での開発を求められたりしたら、新しく別バージョンの作業環境を整える必要が出てきます。
そんな時にvirtualenv
を使うことで、手軽に求められる開発環境を作ることができます。
私にとっては、まだまだ使う場面は出てきませんが、一度経験しておけば、記憶のどこかにとどめておけるので、いろいろ試しながら学習してみました。
ちなみに、Python2の環境で、parenthesesの丸括弧を使って実行してみたところ、どういうわけか普通にprint出力ができたのですが、どうしてなのかわからないんですよね。
Python3がPython2の部分をカバーしているというのならわかるのですが、Python2がPython3の記述をカバーしてるのはどういうことなんでしょう?
もしかしたら、Python2では、parenthesesの丸括弧があってもなくても問題がなかったけど、プログラムをよりわかりやすくするために、Python3で丸括弧ありだけが認められたということかもしれません。
いろいろ試すといろいろ疑問が浮かんできてなかなか前に進めなくなってしまいますが、Pythonへの理解が少しずつ進むので、ほんとあっという間に時間が過ぎ去っていきます。
時間は限られているので、ある程度理解ができたら次に進むようにするのも必要です。
ということで、明日も元気にGood Python!