我在 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:\Python
python.exe
Scripts
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