Answers:
#!/usr/bin/env python3
将通过返回正确的完整二进制路径sys.executable
。也许您的OS或Python版本的行为略有不同。
python
和python3
命令调用了脚本,并打印了正确的可执行文件。
只是使用os.environ
以下方法来指出有用性的另一种方式:
import os
python_executable_path = os.environ['_']
例如
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
是由外壳设置的。但这不需要设置,因此可能会给出错误的答案。
有几种其他方法可以找出Linux中当前使用的python:1)which python
命令。2)command -v python
命令3)type python
命令
同样,在Windows上使用Cygwin也会得到相同的结果。
kuvivek@HOSTNAME ~
$ which python
/usr/bin/python
kuvivek@HOSTNAME ~
$ whereis python
python: /usr/bin/python /usr/bin/python3.4 /usr/lib/python2.7 /usr/lib/python3.4 /usr/include/python2.7 /usr/include/python3.4m /usr/share/man/man1/python.1.gz
kuvivek@HOSTNAME ~
$ which python3
/usr/bin/python3
kuvivek@HOSTNAME ~
$ command -v python
/usr/bin/python
kuvivek@HOSTNAME ~
$ type python
python is hashed (/usr/bin/python)
如果您已经在python shell中。尝试任何这些。注意:这是另一种方法。不是最好的pythonic方法。
>>>
>>> import os
>>> os.popen('which python').read()
'/usr/bin/python\n'
>>>
>>> os.popen('type python').read()
'python is /usr/bin/python\n'
>>>
>>> os.popen('command -v python').read()
'/usr/bin/python\n'
>>>
>>>
python
从shell中键入,则会启动python shell。如果您从一个明确的不同路径开始(例如/opt/python/2.5/bin/python
),或者使用python3
然后运行这些python命令,它们全部都会产生错误的答案,并且与不是最pythonic的方式无关,这是完全错误的。
/usr/bin/env python
执行为的脚本中似乎不起作用env -i ./script
。在这种情况下,它将返回当前工作目录。