2017-09-06 14 views
1

私はmkvirtualenvのバージョンを更新し、virtualenvのなぜvirtualenvwrapperはpython3ではなくpython2に関連するパスを作成していますか?

$ sudoのピップ私の人生は私が唯一のPython 2を使用して、Pythonの3 -now-使用したかったので、--upgrade virtualenvのvirtualenvwrapper

をインストールvirtualenvwrapperに問題がありました。

は、その後、私は私のpython3のインストールのための仮想環境を作成してみました:

$ mkvirtualenv py3test -pは/ usr/binに/のpython3

を環境が~/.virtualenvs/py3testに作成されます。アクティブたら、私は私が作ったパッケージをインストールしたい:

(py3test)$インストールPIPのpython-cantrips (py3test)$

を凍結PIPを、パッケージが適切にインストールされています。 $ ipython

そして、私は適切ipythonを入力 (py3test)ipythonをインストールPIP $

(py3testを):それから私はipythonをインストールし、それを実行します。しかし、私は...

import cantrips 

そして、それはImportErrorで爆発する。それから私はsys.pathをチェックします。問題はここにあります:sys.pathには '/home/myuser/.virtualenvs/py3test/lib/python2.7/site-packages'のようなパスが含まれています。私はそのようなコンピュータにいないので、パスが正確かどうかを覚えていません。しかし、私は確かに一つのことを持つことができます:環境はpython3で作成されました(ディレクトリはpython2.7ではなく、virtualenvでpython3.5です)。

So:なぜ、virtualenvはpython3用の環境を作成しますが、代わりにpython2.7環境であるかのようにパスを追加していますか?

+1

あなたは 'pip3'を使ってみましたか? Python3にenvを使いたいなら 'python3 -m venv ENV' – AndMar

+1

バージョンが表示されている' python'を実行するだけですか? @KlausD。 –

+0

私が使うデフォルトのPythonバージョンはPython 2.7です。 mkvirtualenvを実行する前にデフォルトのpythonオプションを変更する必要がありますか?もしあれば、virtualenvの-pオプションの目的は何ですか? –

答えて

2

見つけました!

virtualenvまたはvirtualenvwrapperと問題はありませんでした。問題はipythonでした。実際には、具体的にはipythonという問題はありませんが、virtualenv内でスクリプトにアクセスできるようになっています。

グローバルにはipythonがインストールされていました(これはグローバルpython27で動作します)。ローカルのpython3環境にipythonをインストールしたときに、環境をもう一度リフレッシュするまで、(シェルの)パスは更新されませんでした(例えば、非アクティブ化、再びアクティブ化)。だから私がもう一度試してみたところ、ipythonが適切でした(自分の環境が3.5のローカルipython)、生成されたパスは予想通りでした。