PIPがvirtualenvディレクトリにインストールされない


10

私はすでに存在するvirtualenvにdjangoをインストールしようとしています。

こちらの pip-installウェブサイトに記載されている手順に従って、SSHから以下を実行しました。

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

ただし、インストールの最下部に次のように表示されます。

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

それをグローバルディレクトリにインストールしようとしているようです。sudo権限がありません。ここで何か悪いことをしていますか?

更新:$ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games


他のパッケージでも正しく機能しますか?使用しても同じ問題がありますeasy_installか?
ラスク

他のパッケージと同じ問題。そして、easy_installはsudoを必要とし、グローバルディレクトリにインストールされると思います。
ルークサパン2013

いいえ、virtualenvを設定すると、easy_installとpipが得られます。入力which easy_installして、virtualenvとsystemのどちらを使用しているかを確認できます。
ラスク

実際、virtualenv内からpipを実行していますか?何がwhich pip得られますか?pip中が見えますmyenv.env/bin/か?
ラスク

myenv.env / bin /内にpipが表示されます。私はenvを再度「アクティブ化」しようとしましたが、そのモードであるにもかかわらず、「which pip」と「which easy_install」はどちらも「usr / local / bin / pip」と「usr / bin / easy_install」をそれぞれ返します。
ルークサパン2013

回答:


6

1年遅れの回答でごめんなさい!私は同じ問題を抱えて修正しましたが、仮想環境の作成後にディレクトリの名前を変更したかどうかはわかりませんが、変更しました。もしそうなら、これが私がやったことです。

1.)deactivateあなたのv-env 修正後、v-envを再起動する必要があるので、deactivate今も同様です。正しい?

2.)ここで、v-envを別のパスに作成したので、これらのファイルの静的パス変数を変更する必要があります。

ピップを動作させるためにこれを行う必要はありませんが、私はまだ行います。 bin/activatebin/activate.cshbin/activate.fish

bin/pipbin/pip2bin/pip2.7

bin/easy_installbin/easy_install2.7

3.)pipを機能させるには、pipファイルのpythonインタープリターを修正する必要があります。これには、作成プロセスでvirtualenvによって静的インタープリターの場所が設定されます。

4.)easy_installを機能させるには?あなたはそれを推測しました、通訳者の場所を修正してください。

これが将来これを読んでいるすべての人に役立つことを願っています OP、遅れてすみません。


ええ、まさにそれでした。私の場合、virtualenvを最初から再作成するだけで解決しました。
ルークサパン

助けてくれてうれしい
クリスピー

ようやく答えを見つけてよかったです。私にとっては、envフォルダーでsedを使用することで、作業がはるかに簡単になりました。のようなものgrep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @出典
キース

「pipを機能させるには、pipファイルのpythonインタープリターを修正する必要があります」と言いますが、これはどこでどのように行われますか?
デイブ

3

私も同じ問題を抱えていました。

仮想環境を削除して新しい環境を作成し、問題を解決しました。

おそらくあなたが望んでいた答えではありませんが、それだけなので...


1

まあ、管理者権限がないと、できることは非常に制限されます。自分を昇格したり、特権を要求したりすることが許可されていない場合、私がそれを実行するために見つけた最善の方法は、別の環境を作成し、requirements.txtファイルを作成し、必要なすべてのパッケージをマシン(django)にダウンロードすることですまた、要件ファイルに配置されていれば動作するはずです。


0

同じ問題があった。私の場合の理由は、作成された仮想環境がpython2.7(デフォルト)用であったが、pip3を使用してパッケージをインストールしていたためです。私のvirtualenvにはpip3が存在しなかったため、デフォルトでグローバルなものになりました。私にとっての修正は使用することでした

virtualenv flask --python=python3

環境を作成します。


0

ユーザー名を変更することで同じ問題が発生しました。クリスピーの答えは完全に正しいです。そして私の解決策はより便利かもしれません。

setps:
1.仮想環境のbinパス(cd ~/virenv_dir/bin
2 など)を入力します。sedコマンドを使用して、このディレクトリの下にあるすべてのファイルの名前を変更します。sed -i 's/old_name/new_name/' *


0

私の場合、2つのエイリアスを定義しました(デフォルトのpythonバージョンでの他の問題を克服するため)。

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

そして、これは同じ症状を引き起こしていました:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

エイリアスを削除すると問題が解決しました(virtualenvの作成前または作成後)


0

呼び出すsudo pipと、virtualenvでpipではなく、グローバルpipが呼び出されます。環境をアクティブ化/作業してからpip、ではなくを呼び出すだけで、sudo pip私の場合と同様に問題が解決する可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.