2012-05-04 4 views
10

仮想環境のソースを行った後、私はpipが私の仮想環境の外にパッケージをインストールするのはなぜですか?

pip install -U --no-deps django-social-auth 

を試してみて、それが返されます。

OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.6/dist-packages/django_social_auth-0.6.9-py2.6.egg-info/dependency_links.txt' 

は、なぜそれがvirtualenvの外に書き込もうとしていますか?

+3

あなたが呼び出すpythonが実際には仮想envのものであることを確認できますか? –

+0

どうすればいいですか? – Bastian

+1

'which pip'端末で – JosefAssad

答えて

7

仮想環境を含むディレクトリの名前を変更したときにこの問題が発生しました。使用していたハードパスピップが間違っていた。

仮想環境のpython実行可能ファイルを指すようにpipスクリプトでshebangを更新します。

+0

素晴らしい!私は仮想env/bin/pipを開いて、shebangが仮想envのpython実行可能ファイルを指していないことを認識しました。私はそれを更新しましたが、私はこの仮想envを有効にし、 'どのpython'を行うのですか?私はまだシステムのpythonを取得し、仮想envは取得しません。それはこれまでのところ非常に良い答えです。それを受け入れたものとしてマークする。 – Bastian

+0

はい、あなたは/ path/to/virtualenv/bin/pythonを実行する必要があると思います – starsinmypockets

3

あなたはおそらくあなたから仮想環境、つまりsthのピップを確認する必要があります。以下のような私の意見で

./env/bin/pip install -U --no-deps django-social-auth 
4

、どちらかあなたはvirtualenvのの一部ではないピップを実行している、またはあなたがしているが、実行されますPythonインタプリタはvirtualenvのの一部ではありません。あなたが実行しているパイプがwhich pipの正しいパイプであることを確認し、プレーンpipを呼び出すのではなく、your_envdir/bin/python pip <arguments>を使用して、pythonをvirtualenvから強制します。

bin/activateで環境を正しく起動した場合、正しいpipが得られるはずです。これは奇妙です。 sh bin/activateではなく、. bin/activateで有効にしてもよろしいですか?彼らは2つの異なるものです。プロンプトが変化しましたか?

+0

あなたは正しいです、どのpipが/ usr/bin/pipを返しますか。 'source apps/virtual_environments/my_project/bin/activate'を使用し、プロンプトが '(my_project)user @ host:〜$'に変更されました。仮想envにあるピップを使用しようとすると、「python:悪いインタプリタ:そのようなファイルやディレクトリはありません」というメッセージが表示されます。 – Bastian

+0

これを引き起こす原因は何ですか? – Bastian

+0

@Bastian:あなたは仮想envにはPythonがありませんか? –

関連する問題