使 `#!/usr/bin/env python` 在 Windows 上运行

使 `#!/usr/bin/env python` 在 Windows 上运行

我在 Windows 上使用 MSYS 提供的 Bash。

我尝试使用 shebang 运行 Python 文件#!/usr/bin/env python,但收到以下错误消息:

/usr/bin/env: python: No such file or directory

我该怎么做才能让它发挥作用?

我知道我可以通过添加后缀来启动 Python 文件python,但我希望它在没有后缀的情况下也能工作。

答案1

使用 Python 的正确安装路径,例如:

#!c:/Python/python.exe

如果您的系统上有类 Unix 路径支持(我不熟悉 MSYS),您始终可以输入python可执行文件的路径,即 的输出which python

答案2

答案3

我发现 Virtualenv 的activate.sh文件和 MSYSGIT 不匹配。它本来就不打算在 Windows 上运行。

答案4

问题的根源在于,shebang 中的空格被解释为向可执行文件提供附加参数,因此C:\Program Files\Python\python.exe被视为C:\Program给出的Files\Python\python.exe参数。

对此最好的解决方案是,因为 Windows 喜欢$HOME目录和Program Files其他地方的空格,即使它确实会破坏 cmd.exe、Powershell 和其他工具中的程序,方法是:

安装 Python 并将所在文件夹及其内部的目录C:\Python添加到系统或用户级别的环境变量中。C:\Pythonpython.exeScriptsPATH

如果您需要 Python 2.7.x 和 3.x 共存,请将它们安装到C:\Python27和中C:\Python36C:\Python37并将重命名python.exepython2.exe、、python36.exepython37.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

相关内容