以下は、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$
スペースなしのパス内に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
は存在しないため、失敗します。
この問題に遭遇した人のために、パスの長さはスペースを使用せずに問題を引き起こす可能性があることを発見しました(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
うまく動作しました。以下のアレックスのコメントを参照してください
次の場合、pip
コマンドは機能しません。
pip
をインストールするには、コマンドSudo apt-get install python-pip
またはSudo apt-get install python3-pip
)何らかの理由でフォルダの名前を変更したりパスを変更できない場合は、yourvirtualenvfolder/bin
(cd
コマンドを使用)してから./python pip install packagename
。
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
を参照するように環境を変更することに注意してください。
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
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.
次の手順は私を成功に導きます:
したがって、少なくともAnaconda(python)のインストールは単純で、スペースで汚染されていないパスが重要でしたです。たぶん、win32apiのインストールも重要でした。わからない。
私の場合、環境を無効にしてsource bin/activate
再び機能します。
私のフォルダの内容は、bin、libなど、virtualenv
によって生成されたサブフォルダ名と同じであるようです。ファイルをコピーした後、virtualenv
環境を再アクティブ化して新しい情報を更新します。
On Python 3.7これで問題はありませんでしたが、Python 3.6で問題が発生しました。最も簡単な回避策はありました。 Githubでこれが見つかりました:
の代わりに:
pip install -r requirements.txt
私が使う:
python env/bin/pip install -r requirements.txt
したがって、実際には、仮想環境ディレクトリ内のpipファイルを直接ポイントします。もちろん、これを試す前にまず有効にする必要があります。これがここに来る人を助けることを願っています!
同じ問題が発生しているときに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