Python“bad interpreter”错误

16

所有东西似乎对Python 2和3都能正常工作:

$ which Python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python

$ python --version
Python 2.7.9

$ python2
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

$ python3
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

我的 .bash_profile 设置如下:

PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"
export PATH

问题:

$ virtualenv My_Env
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python3/bin/python3.4: bad interpreter: No such file or directory

以上路径不存在。我直接从Python网站下载了Python软件包并使用默认设置安装。

在此之前,我使用HomeBrew安装了Python,但是这个路径似乎并不是HomeBrew文件路径。

总之......我的文件路径出了问题,不在我的.bash_profile文件中,我不知道该去哪里修复它。


还要注意的是,我用完全相同的.bash_profile文件和Python安装设置在另一台电脑上设置,并且它可以完美地运行......

两台电脑都在运行Mac Yosemite操作系统。

提前感谢!


/usr/local/opt/python3 里面有什么? - kpie
在 /usr/local/opt/ 中没有 python3。 - Dex
检查你的 bash 文件中是否有 export VIRTUALENV_PYTHON= - dting
DT,导出VIRTUALENV_PYTHON=不存在;它应该存在吗? - Dex
不,我在想你的虚拟环境中是否有一个默认 Python 的环境设置。很高兴你找到了答案。 - dting
感谢所有的回复。DT,你的问题是促使我考虑尝试一次全新安装Virtualenv的原因。 :) - Dex
4个回答

12

好的,我已经通过重新安装virtualenv来解决了问题。我认为这就是路径问题所在的地方(可能是在virtualenv的安装过程中某个地方)。


VIRTUALENV和Homebrew可能在使用Python 3的路径上有冲突,在你使用Homebrew安装Python 3时会导致VIRTUALENV出现问题。 - kpie
是的,我在使用Python.org提供的安装程序之前安装了virtualenv。因此,我认为virtualenv正在使用原始路径而不是新路径。 :) - Dex
4
在虚拟环境新安装后,执行source ~/.bash_profile可能会有所帮助。这对我有效。 - Agustín

7
我的问题非常简单,就是在 venv/bin/pip 的顶部目录中有空格,这意味着该路径被放在引号内。只要我确定它不在包含空格的目录下并移除引号,它就能工作了。
例如:#!"/Users/Tomm/MY PROJECT/venv/bin/python" 应更改为 #!/Users/Tomm/MY-PROJECT/venv/bin/python

谢谢!在尝试了好30分钟用pip解决这个问题后,我简直要疯了。 - ChrisR
在OS X和Linux虚拟机上遇到了这个问题。绝对不要在目录名称中包含空格! - Peter Shannon

1
你可以在虚拟环境的bin文件夹中检查"activate"文件,并查看大约在第42行附近写了什么,然后可以手动设置它,同时要记住该文件夹中所有可执行文件都是针对第一个shebang行进行硬编码的。
你也需要更改它们。或者将文件夹移动到适合您当前临时任务的正确位置,否则您可能需要一个虚拟环境重定位工具或重新安装它。

1
重新安装virtualenv应该可以解决这个问题。我也遇到了同样的bug,使用pip重新安装解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接