Python 3.x Python版本在提示符处为3.2,在脚本中为2.6

Python 3.x Python版本在提示符处为3.2,在脚本中为2.6,python-3.x,python-2.6,Python 3.x,Python 2.6,雪豹上python的默认版本是2.6。我决定使用python网站上的安装程序升级到3.2,该网站安装了32位和64位版本的python(对某些库很有用) 问题是,像3.2那样编写的python脚本解释为2.6,而python shell解释为3.2 我写的东西可能没有意义 所以我有一个脚本,上面写着: #!/usr/bin/python import sys print(sys.version)#note the python 3 syntax 当我运行它时,我得到以下信息: $ ./test

雪豹上python的默认版本是2.6。我决定使用python网站上的安装程序升级到3.2,该网站安装了32位和64位版本的python(对某些库很有用)

问题是,像3.2那样编写的python脚本解释为2.6,而python shell解释为3.2 我写的东西可能没有意义

所以我有一个脚本,上面写着:

#!/usr/bin/python
import sys
print(sys.version)#note the python 3 syntax
当我运行它时,我得到以下信息:

$ ./test.py 
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$python
Python 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
>>> 
当我在python提示符下运行相同的东西时,我得到如下结果:

$ ./test.py 
2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)]
$python
Python 3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print(sys.version)
3.2.3 (v3.2.3:3d0686d90f55, Apr 10 2012, 11:25:50) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
>>> 
问题是,我如何解决这个问题?我认为这是一个安装问题。
编辑以使名称更有用。

在命令行中,键入
whichpython
并报告结果。我打赌您的路径是出于某种原因找到Python 3.3,它与
/usr/bin/Python
中的路径不同。如果它们不同,请使用
#/usr/bin/env-python
在脚本中使用path-env变量而不是绝对路径来查找python。

重要的是要了解路径中的优先级(/usr/bin或/usr/local/bin),“哪个python”在终端中显示了什么?您需要编辑.bash_配置文件并添加到新python二进制文件的路径中,然后更改#/脚本中的usr/bin/python指向新的python,类似于#/usr/local/bin/python-无论安装程序将python 3.x放在哪里,我仍然不知道为什么在脚本中运行python会给我带来2.6版python,尽管在提示符下运行python会给我带来3.2版python。我确实修好了。 我找到了python3二进制文件,并在我的
/usr/bin
中重命名了有问题的python二进制文件。然后我制作了一个从
/usr/bin/python
/Library/Frameworks/python.framework/Versions/3.2/bin/python3


我仍然很好奇最初的问题是什么,但现在已经解决了。

根据您在澄清中所写的内容,在.bash_配置文件的末尾定义了一个别名:

alias python=python3.2
这就是罪魁祸首。考虑放弃它,你有一个更加透明和直观的情况。


“whichpython”(我假设它是/usr/bin/which)并没有解决您所感知的谜团,因为它不知道别名。它只在您的路径中找到一个python二进制文件。

根据您的建议:
$which python/usr/bin/python
这里没有什么意外。。。。隐马尔可夫模型!真想不到!您是否尝试过将脚本的第一行切换到
#/usr/bin/env python
看看这是否有帮助?我修改了测试脚本,将第一行改为
#/usr/bin/env-python
如您所建议。它没有解决我的问题。下面是自动迁移工具添加到我的.bash_profile
$cat~/.bash_profile | tail#设置Python 3.2的路径中的内容。原始版本保存在.bash_profile.pysave PATH=“/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}”导出路径别名'python'='python3.2'
python
应运行python2;python3二进制文件应称为
python3
。最近有一个政治公众人物对此进行了宣传。