2014-05-05 17 views
0

我是Python新手,一般编程。 我试图强制我的脚本使用python.org中使用python安装程序安装的Python3.4。Python shebang不强制其他版本[Mac]

我的脚本有这个。

#!/usr/local/bin/python3.4 
import sys 
print(sys.version) 
print("Hello, World!") 

终端返回此:

$ python pyscript.py 
2.7.5 (default, Aug 25 2013, 00:04:04) 
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] 
Hello, World! 

的家当路径是正确的,根据“这python3.4”

+3

运行它直接使用'./pyscript.py',或者做'python3.4 pyscript.py'。 –

+0

shebang在你直接运行脚本时使用,然后你甚至可以将脚本重命名为'pyscript'(没有扩展名'.py'):) – furas

回答

1

家当只有当你运行你的脚本直接使用命令这样用

$ ./pyscript.py 

当你从命令行解释python的时候,shell并没有使用lt shebang line。它只是运行它在命令行中找到的第一个python可执行文件。

要更改默认的python可执行文件,请调整您的路径。或者更好的使用python虚拟环境。有关虚拟环境的更多信息是here

+1

谢谢。我试过./pyscript.py,但终端返回权限被拒绝,即使我是管理员,文件保存在我的文档文件夹中。 我更喜欢使用终端代替PVM,因为我必须使用屏幕阅读器(我是视觉受损的)。 – cmblake

+2

@cmblake你必须设置可执行位,即使root没有标记'x'位也不能执行。 'chmod u + x pyscript.py' – roippi

3

通过在脚本上调用python,您在路径中使用了python。正如评论建议在设置执行位后直接运行文件。

1

根据您的安装,蟒蛇可以安装在的地方在OS X

众多没有任何其它附加的变化,你很可能是位于/usr/bin/python蟒蛇。这可以通过键入which python

~ $ which python 
/usr/bin/python 

注意的是,虽然/usr/local/bin/python3.4可能是正确的路径到Python 3.4,当你键入python script.py你是不是调用你找到你这么做的时候which python3.4命令来验证。

为了解决这个问题,你可以做一个:

  • 直接调用脚本。键入script.py(带有可执行位),而不是python script.py。您可能需要将脚本的权限更改为chmod u+x script.py
  • /usr/bin/python中的版本更改为所需的版本。请注意,这可能是在其他事情非常危险期待底座安装的2.7.5 Python可以成为很不高兴
  • 更改$ PATH把/usr/local/bin//usr/bin前,有蟒蛇在/usr/local/bin/python点到3.4版本。
0

的家当路径仅由OS使用时,你的可执行文件,直接运行它,就像这样:

chmod 755 pyscript.py 
./pyscript.py 

对于Python的家当仅仅是一个注释。即使在CLI上直接调用解释器时,强制执行该操作的唯一方法是比较版本,以及是否使用os.execv或更低版本重新启动该版本。像这样的东西应该做的(虽然不测试):

#!/usr/local/bin/python3.4 
import sys 
import os 
if (sys.hexversion < 0x3040000): 
    sys.argv.insert(0, '/usr/local/bin/python3.4') 
    os.execv(sys.argv[0], sys.argv) 

print(sys.version) 
print("Hello, World!") 

你可能想使用env的家当,避免指定路径,避免硬编码在Python代码太路...