我在MSYS提供的Windows上使用Bash。
我尝试运行带有shebang的Python文件#!/usr/bin/env python,但收到以下错误消息:
/usr/bin/env: python: No such file or directory
我该怎么做才能使这项工作?
我知道我可以通过使用加上后缀来启动Python文件python,但是我希望它也能在没有后缀的情况下工作。
我在MSYS提供的Windows上使用Bash。
我尝试运行带有shebang的Python文件#!/usr/bin/env python,但收到以下错误消息:
/usr/bin/env: python: No such file or directory
我该怎么做才能使这项工作?
我知道我可以通过使用加上后缀来启动Python文件python,但是我希望它也能在没有后缀的情况下工作。
Answers:
使用安装Python的正确路径,例如:
#!c:/Python/python.exe
如果您的系统具有类Unix路径支持(我对MSYS不熟悉),则始终可以输入python可执行文件的路径,即的输出which python。
which envand which python和的输出是type python什么?
我原来是Virtualenv的activate.sh文件和MSYSGIT 之间不匹配。它从未打算在Windows上运行。
问题的根源在于,在shebangs空间被解释为一个可执行文件提供额外的参数,所以C:\Program Files\Python\python.exe被视为C:\Program给定Files\Python\python.exe作为参数。
最好的解决方案是:尽管Windows 确实可以破坏cmd.exe和Powershell和其他工具中的内容,但Windows在$HOME目录和Program Files其他位置都喜欢空格,它是:
安装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
envasker那样做。