在 Windows 10 上使用 cygwin。当我在 cygwin bash shell 上键入时:
$ python --version
Python 3.8.10
...我知道我拥有的默认 Python 是 3.8。但是,实际的可执行文件是什么 - 或在哪里 - 被调用?这有点难以明确找到;说,which
告诉我:
$ which python
/usr/bin/python
...但如果我仔细观察:
$ ls -la /usr/bin/python*
lrwxrwxrwx 1 user None 24 Oct 1 14:06 /usr/bin/python -> /etc/alternatives/python
lrwxrwxrwx 1 user None 13 Oct 1 14:04 /usr/bin/python2 -> python2.7.exe
-rwxr-xr-x 1 user None 9235 Jan 2 2021 /usr/bin/python2.7.exe
-rwxr-xr-x 1 user None 1685 Jan 2 2021 /usr/bin/python2.7-config
lrwxrwxrwx 1 user None 16 Oct 1 14:05 /usr/bin/python2-config -> python2.7-config
lrwxrwxrwx 1 user None 25 Oct 1 14:06 /usr/bin/python3 -> /etc/alternatives/python3
lrwxrwxrwx 1 user None 14 Oct 1 14:04 /usr/bin/python3.6 -> python3.6m.exe
-rwxr-xr-x 1 user None 10259 May 5 13:22 /usr/bin/python3.6m.exe
-rwxr-xr-x 1 user None 9747 May 20 12:07 /usr/bin/python3.8.exe
所以,它/usr/bin/python
实际上是一个符号链接/etc/alternatives/python
,它是一个带有 XML 内容的小二进制文件(编辑:错误,见下文);所以它不是Python 解释器可执行文件。
当然,我现在已经可以猜到可执行文件最有可能/usr/bin/python3.8.exe
- 但是,我想从 Python 本身明确地得到这个答案。
但是,如果我这样做:
$ python -c 'import sys; print(sys.executable)'
/usr/bin/python
...我再次得到/usr/bin/python
答案,这只是指向其他内容的符号链接,因此不是实际的可执行文件。
有没有办法从 Python 本身检索到实际 Python 解释器可执行文件的绝对路径?
编辑:原来/etc/alternatives/python3
是实际解释器的符号链接:
$ ls -al /etc/alternatives/python3
lrwxrwxrwx 1 user None 18 Oct 1 14:06 /etc/alternatives/python3 -> /usr/bin/python3.8
...但是,我仍然想知道 Python 本身是否有办法告诉我这一点。