MSYSが提供するWindowsではBashを使用しています。
Pythonファイルを#!/usr/bin/env python
のシバンで実行しようとしましたが、次のエラーメッセージが表示されます:
/usr/bin/env: python: No such file or directory
これを機能させるにはどうすればよいですか?
Pythonファイルにpython
のサフィックスを付けることで起動できることはわかっていますが、サフィックスなしでも機能させたいです。
Virtualenvのactivate.sh
ファイルとMSYSGIT。 Windowsで動作することを意図したものではありません。
代わりに、Pythonがインストールされている適切なパスを使用してください。例:
#!c:/Python/python.exe
システムでUnixライクなパスをサポートしている場合(私はMSYSに詳しくありません)、python
実行可能ファイルへのパス、つまりwhich python
の出力をいつでも入力できます。
あなたは興味があるかもしれません WindowsのPythonランチャー
(シェルから)実行するとどうなりますか?
$ /usr/bin/env python
..?
インタラクティブなpythonセッションを開始すると、pythonが見つかります。(単に実行することもできます:type python
)。 「そのようなファイルやディレクトリはありません」と表示される場合は、python
がPATHに見つかりません。以下を微調整して問題を解決できるかどうかを確認します(path/to/python内のスペースが問題を引き起こす可能性があります)。
$ export PATH=$PATH:/path/to/python
$ /usr/bin/env python
問題の根本は、シバンのスペースが実行可能ファイルに追加の引数を提供するものとして解釈されるため、C:\Program Files\Python\python.exe
がC:\Program
を引数として指定されたFiles\Python\python.exe
と見なされることです。
Windowsが$HOME
ディレクトリとProgram Files
などの場所でスペースを愛しているため、cmd.exeやPowershellやその他のツールで実際に問題が発生する可能性があるため、これに対する最善の解決策は次のとおりです。
インストールPython to C:\Python
and C:\Python
folder where python.exe
lives and the Scripts
directory that lives into PATH
システムレベルまたはユーザーレベルの環境変数。
Python 2.7.xと3.xを共存させる必要がある場合は、それらをC:\Python27
とC:\Python36
とC:\Python37
にインストールして、python.exe
からpython2.exe
、python36.exe
、python37.exe
などに変更し、それらの各フォルダーとそのScripts
フォルダーをPATH
に追加します。 Python 3つのバージョンを「デフォルト」にしたいバージョンを決定し、python3.exe
としてそのフォルダーにコピーを作成して、!#/usr/bin/env python3
を使用するスクリプトを処理する。
ユーザーのホームディレクトリにスペースがある場合、pip install --user somepackage
構文を使用すると問題が発生する可能性もあります。 --user
はデフォルトでホームディレクトリになり、この場合もスペースが問題を引き起こします。回避策は ここ で説明されていますが、結局はPYTHONUSERBASEを環境にエクスポートすることになります。
export PYTHONUSERBASE=/myappenv
pip install --user SomePackage
またはWindows(Powershell)の場合:
$env:PYTHONUSERBASE='C:\PythonPkgs'
pip install --user SomePackage
Windows 10の最新バージョンは、Linuxサブシステムのインストールをサポートしています。そこから実行する場合、パスは正しいはずです。
このように実行しても問題がなければ、ソリューションとして機能するはずです。