我在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 env
and 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
env
asker那样做。