2017-01-20 15 views
0

を使用しています、私はPythonの仮想環境を作成し、実行して、それをアクティブにしました。今、私は実行するたびにパイソン - 仮想環境は、Systemディレクトリ

(deep-learning) [email protected] $ 

にプロンプ​​トをオン
[email protected] $ source ./venvs/deep-learning/bin/activate 

をpythonパッケージをインストールしようとしたり、システムをインストールしようとすると、システムは仮想環境にあり、システム全体で機能することを無視しているようです。

(deep-learning) [email protected] $ which pip 
/usr/local/bin/pip 

私のシステムにない新しいパッケージをインストールしようとすると同じことが起こります。仮想環境ではなくシステムファイル(/ usr/bin)にインストールされます。

仮想環境に問題がありますか?システムファイルを無視して環境内のすべてを行うようにするにはどうすればよいですか?


私は仮想環境を作成するとき、それはローカル環境のパッケージを使用するために、明示的なフラグを使用すると言うthis質問を見てきましたが、私は仮想環境を作成するためにpython-3.5 -m venvを使用し、このフラグが削除されますこのバージョンではデフォルトオプションになっています。

私もthis質問を見て、VIRTUAL_ENV変数が仮想環境のactivateファイルで正しく設定されていることを確認できます。ここで

+0

'echo $ PATH'の結果は何ですか? activateはPATHの前にvenvのバイナリを置くことになっています – jonatan

+0

@jonatan - 私はpipなしでvenvをインストールしたので、 'pip'コマンドはシステムのものを使用していました。どうやら、仮想環境にいるにもかかわらず、パッケージをシステムにインストールするようになってしまいます。私はそれを本当に理解していませんが、私は答えでそれを解決することができました。 – Myridium

+0

[virtualenvにはpipが含まれていない可能性があります](http://stackoverflow.com/questions/34503686/virtualenv-does-not-include-pip) – holdenweb

答えて

0

が問題だった:

あなたがローカルpipインストールせずにvenv上pipを実行する場合、それはシステムのpip venv外にデフォルト設定されますようです。仮想環境を起動したとしても、これはvenvではなくシステムにパッケージをインストールするように思えます。ここで

が解決した:

  • まず、私が原因a bug that has long remained unresolvedにピップせずに仮想環境をインストールする必要がありました。

  • 第2に、hereの指示に従って、仮想環境にpipをインストールしました。ただし、何らかの理由で私のユーザーがアクセスできない一時的なフォルダを使用する必要がありました。だから、これは失敗し、私がそれを働かせることができる唯一の方法は根になることでした。

    1. sudo su
    2. activate ..../venvs/deep-learning/bin/activate仮想環境をアクティブにします。
    3. curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python上記の回答によれば、

    which pipが、今のシステムのいずれかを使用しpipを実行し、使用していた(venv内部の)正しいpipを示しました!無効にする(deactivate)、これを解決するvenvを再度アクティブにしてください。

    これをrootとしてインストールすると、仮想環境内にpipを使用してさらに多くのパッケージをインストールしようとすると、エラーが発生しました。

  • chown <user>:<group> -R ..../venvs/deep-learning/*

そして、それはそれでした。これらの手順の後、私はvenvを有効にしてpipを正しく実行することができました。それはpipをvenv内で使用し、venvのパッケージをインストールします。

関連する問題