質問: Pythonの初心者で、現在は主に言語について学習中です。 Pythonの環境を構築するのに「anaconda4.1.1(Python 3.5.2)」を使用しました。 Python3.6が出ているとのことで、この際環境について勉強しようと思っているのですが、理解ができません。 まず、次のように、Python3.6の環境を構築しました。 ``` c:\conda create -n py36 python=3.6 anaconda - # conda environments: # py36 C:\Users\(uname)\AppData\Local\Continuum\Anaconda3\envs\py36 root * C:\Users\(uname)\AppData\Local\Continuum\Anaconda3 ``` 質問です。 1.「activate py36」で、仮想環境を切り替えられるらしいのですが、できません。 切り替え方法を教えてください。 ※メインシェルは「powershell」を使用しています。 ※シェルをコマンドプロンプトを使用した時には、切り替えられました。 2.コマンドプロンプトで切り替えることができましたが、 「(py36)c:>」とプロンプトが変わりました。(py36)が表示されている間は、python3.6の 仮想環境になることは推測できますが、デフォルトをPython3.6にすることは可能でしょうか? 例えばrootのバージョンを3.6にアップデートにしてから、 3.5.2を新しく構築するものなのでしょうか? 3.仮想環境を切り替えるでネットで調べていたのですが、「virtualenv」というものも あるらしいのですが、activeateコマンドとどう違うのでしょうか。
回答: 1. Powershell で activate する方法 Powershell で Anaconda の仮想環境を切り替えられないのは既知の問題です。この issue に情報が集約されています。 2018年3月現在解決されておらず、以下のワークアラウンドが知られています。 ### 方法1 pscondaenvs を使う。 ``` conda install -n root -c pscondaenvs pscondaenvs ``` ### 方法2 Powershell の中で `cmd` を起動し、`activate` してから Powershell に戻る。 2. デフォルトの設定を変えるには > > (デフォルトをPython3.6にするには) rootのバージョンを3.6にアップデートにしてから、3.5.2を新しく構築するものなのでしょうか? > > > はい。仮想環境は一時的な環境変更のために使うものなので、デフォルトを 3.6 にしたいのであればデフォルトの環境においてアップデートすれば良いです。このときに今のデフォルト環境を失いたくないのであれば、仮想環境をコピーする (clone する) ことができます。 Anaconda の仮想環境についての詳細は、公式ドキュメントをご参照下さい。 3. Anaconda の「環境」と virtualenv の違い 大雑把な説明ですが、conda コマンドは virtualenv コマンドと pip コマンドを統合したものです。Anaconda 公式ドキュメントのこちらに比較があるのですが、virtualenv 単体では仮想環境の中でパッケージをインストールすることができません (pip を使います)。また、そもそも Anaconda Cloud のパッケージを使うには conda コマンドを使うことになります。 Python の仮想環境ツールは他に pyenv というのもあります。本家 Stack Overflow に三者を比較する投稿がいくつかあるので、ご覧ください。 * What is the difference between pyenv, virtualenv, anaconda? * Does Conda replace the need for virtualenv? * What is the relationship between virtualenv and pyenv?