web-dev-qa-db-ja.com

Virtualenvでpip経由でインストールできません

以下は、pipを実行したときに表示されるエラーです。

serkan$ rm -r mysite
serkan$ pwd
/Users/serkan/Desktop/Python Folder
serkan$ virtualenv mysite 
New python executable in mysite/bin/python
Installing setuptools............done.
Installing pip...............done.
serkan$ source mysite/bin/activate
(mysite)serkan$ pip install pinax
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ python pip install pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip 
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ pip
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ pip install Pinax
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ 
61
shaytac

スペースなしのパス内にvirtualenv環境を作成します。これが起こっている理由です:

環境を作成すると、binディレクトリが設定されます。そのbinディレクトリには、環境に関連するすべての実行可能ファイルがあります。一部はスクリプトです。ご存知かもしれませんが、hashbangsは、スクリプトの実行に使用するインタープリターをシステムに伝えるために使用されます。多くの場合、これはスクリプトの上部に表示されます。

#!/usr/bin/env python

スクリプトが/tmp/test.pyにある場合、このコマンドを実行してスクリプトを実行するようシステムに指示します。

/usr/bin/env python /tmp/test.py

あなたの場合、virtualenvは次のようなスクリプトを作成しています:

#!/tmp/oh no/bin/python

システムがそれを実行しようとすると、コマンド/tmp/ohを引数no/bin/pythonおよび/tmp/test.pyで実行しようとします。 /tmp/ohは存在しないため、失敗します。

122
icktoofay

この問題に遭遇した人のために、パスの長さはスペースを使用せずに問題を引き起こす可能性があることを発見しました(Ubuntu 12.04):

virtualenv /home/user/some/very/longer/path/without/spaces/etc/venv

失敗しましたが、

virtualenv /home/user/some/very/long/path/without/spaces/etc/venv

うまく動作しました。以下のアレックスのコメントを参照してください

21

次の場合、pipコマンドは機能しません。

  • システムにpipをインストールしていません。(virtualenvで使用するには、まずシステムにpipをインストールする必要があります。Ubuntuにpipをインストールするには、コマンドSudo apt-get install python-pipまたはSudo apt-get install python3-pip
  • 仮想環境フォルダーへのパスにスペースが含まれています(例:/ home/username/my folder name with spaces/newvirtualenv)
  • 仮想環境フォルダーへのパスが長すぎます。例:/home/username/mytoobigpath/somefolder/anotherfolder/someanotherfolder/someanotherfolderagain/myvirtualenv.(より小さい名前の親フォルダーの名前を変更してみてください)

何らかの理由でフォルダの名前を変更したりパスを変更できない場合は、yourvirtualenvfolder/bincdコマンドを使用)してから./python pip install packagename

19

icktoofayは原因について正しいです。

スペースを含むディレクトリでvirtualenvでpipを使用するには、/path/to/env/bin/pipを編集し、上部のShebangを#!/usr/bin/env python(またはpypyを使用している場合は#!/usr/bin/env pypy)に置き換えます。

Virtualenvは、/usr/bin/env pythonがvirtualenvによって定義されたpythonを参照するように環境を変更することに注意してください。

14
Bryan Head

RedHatでも同じエラーが発生しました。 Python 2.7.3は自分で設定および作成します。[root @ Ifxインストーラー]#pip install Django -bash:/ usr/local/bin/pip :/usr/local/bin/python2.7:不正なインタープリター:許可が拒否されました

解決策:/ usr/local/bin/pipで、最初の行#!/ usr/local/bin/python2.7を実際のPython path#!/ root/installer/Python- 2.7.5/python

1
JackChen255

Windows 7マシンで非常によく似た問題があり、それで数日苦労しました。私のpythonディストリビューションとVE スペースがありましたへの両方のパス。それが正常に機能する数ヶ月前。virtualenvウェブサイトで次のメモを見つけました。

**Windows Notes**
[...] To create a virtualenv under a path with spaces in it on Windows, you’ll need the win32api library installed.

次の手順は私を成功に導きます:

  1. Virtualenvをインストールするためにpipを使用し、それが最新バージョン(pip-7.1.0)であることを確認してください。結果:失敗
  2. Win32apiをインストールします。結果:failure(ただし、インストールプロセスの最後にエラーがありました)。
  3. スペースのないパスにVEをインストールしてみてください。結果:失敗
  4. Anaconda pythonディストリビューションを「[」と「]」括弧を含まないパスに再インストールします。パスにスペースが含まれていました。結果:failure
  5. Anacondaを再インストールしますpythonディストリビューションもスペースが含まれていないパスに。VEフォルダーのパスにスペースがまだありました。結果:success!

したがって、少なくともAnaconda(python)のインストールは単純で、スペースで汚染されていないパスが重要でしたです。たぶん、win32apiのインストールも重要でした。わからない。

0
ellockie

私の場合、環境を無効にしてsource bin/activate再び機能します。

私のフォルダの内容は、bin、libなど、virtualenvによって生成されたサブフォルダ名と同じであるようです。ファイルをコピーした後、virtualenv環境を再アクティブ化して新しい情報を更新します。

0
emmmphd

On Python 3.7これで問題はありませんでしたが、Python 3.6で問題が発生しました。最も簡単な回避策はありました。 Githubでこれが見つかりました:

の代わりに:

pip install -r requirements.txt

私が使う:

python env/bin/pip install -r requirements.txt

したがって、実際には、仮想環境ディレクトリ内のpipファイルを直接ポイントします。もちろん、これを試す前にまず有効にする必要があります。これがここに来る人を助けることを願っています!

0
Bob de Graaf

同じ問題が発生しているときにGoogle検索でこれを見つけ、これが非常に役立つことがわかりました。 virtualenvには、Shebangコマンドを--relocatableに書き換える#!/usr/bin/env <the_python_version_you_used_to_create_the_virtualenv>フラグが追加されました。いくつかの警告がありますので、ドキュメントを読んでその意味を理解してください。

https://virtualenv.pypa.io/en/stable/userguide/#making-environments-relocatable

Virtualenvを作成したときと同じ構文を使用して再配置する必要があります。そうしないと、pythonバージョンが上書きされる可能性があります。これは期待どおりに機能します...

virtualenv --python=python3.5 env-test
virtualenv --relocatable --python=python3.5 env-test

一方、これは#!/usr/bin/env python2.7になります(少なくとも私のローカル環境では)...

virtualenv --python==python3.5 env-test
virtualenv --relocatable env-test
0
bob dob