AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1164336
Accepted
Chenghao Wang
Chenghao Wang
Asked: 2024-08-26 14:46:53 +0800 CST2024-08-26 14:46:53 +0800 CST 2024-08-26 14:46:53 +0800 CST

为什么“python3”和“python3.12”在软链接时版本不同?

  • 772

在 中/bin,我运行了:

$ ls -l python3
lrwxrwxrwx 1 root root 10 Aug 8 01:44 python3 -> python3.12
$ python3 --version
Python 3.12.3
$ python3.12 --version
Python 3.12.5

有人能解释为什么当它们是符号链接时一个是“Python 3.12.3 ”,另一个是“Python 3.12.5 ”吗?

python
  • 3 3 个回答
  • 590 Views

3 个回答

  • Voted
  1. Mircea Vutcovici
    2024-08-26T15:07:40+08:002024-08-26T15:07:40+08:00

    要找出他们从哪里跑来,你可以使用:

    which python3 python3.12
    

    编辑:正如@muru 提到的,您应该使用type它,因为它是一个 shell 内置的、符合 POSIX 的命令:

    type python3 python3.12
    
    • 3
  2. Best Answer
    jcaron
    2024-08-27T00:41:25+08:002024-08-27T00:41:25+08:00

    $PATH当你输入一个命令时,你的 shell 将按照列出的顺序在每个目录中查找它,并执行它找到的第一个命令。

    例如,如果您输入zorglub并且您的$PATH包含/usr/local/bin:/usr/bin:/bin,那么:

    • 您的 shell 将检查是否/usr/local/bin/zorglub存在且可执行。如果是,它将执行该命令并停止。
    • 否则,它将尝试/usr/bin/zorglub
    • 然后它会尝试/bin/zorglub
    • 如果全部失败,则它将返回错误。

    $PATH您可以通过输入来检查值

    echo $PATH
    

    $PATH以冒号分隔,并且它在您的 shell 启动脚本中设置(并且通常会添加到)。

    您得到的结果(似乎是相同的命令返回不同的版本)意味着您可能在除 之外的某个目录中有另一个python3and/or ,其版本与 中的版本不同。通常可能的位置可能包括、、,以及根据您的环境的其他一些位置。python3.12/bin/bin/usr/bin/usr/local/bin/opt/local/bin

    例如,您$PATH可以将 设置为/usr/local/bin:/usr/bin:/bin并且/usr/local/bin包含python3,其(直接或间接)是版本 3.12.3,并且由于/usr/local/bin是第一个,因此python3无条件地将执行该版本而不是 中的版本/bin。另一方面,如果python3.12仅存在于 中/bin,它将回退到该版本,即 3.12.5。或反过来。

    which python3和会分别告诉您输入和which python3.12时运行哪一个。python3python3.12

    如果您想要专门执行python3或python3.12,/bin则需要执行以下操作之一:

    • 将当前工作目录设为/bin,然后运行./python3或./python3.12(它们应该产生相同的结果,因为一个是另一个的符号链接)
    • 指定完整路径:/bin/python3或/bin/python3.12
    • 或者确保您的之前列出的任何目录中没有python3或。python3.12/bin$PATH

    当您有不同的包管理器,或者混合使用包管理器和手动安装的软件时,遗憾的是,软件安装在不同的位置是很常见的,这可能会导致各种各样的问题,特别是如果一个 python 脚本由于某种原因通过 shell 运行另一个 python 脚本。

    对于 Python(以及许多其他程序)而言,这种情况更为严重,因为每个版本的可执行文件可能使用不同的 Python 包路径。您的 Python 包管理器(pip)也可能安装了多个版本,这些版本位于不同的位置并指向不同的位置。它很快就会变得有点混乱,告诉pip install您某些东西已安装并且是最新的,而python告诉您它不是。最好确保所有版本都python通过相同的方式安装(发行版的包管理器或手动安装),而不是两者混合。

    • 1
  3. StevenH
    2024-08-27T02:55:49+08:002024-08-27T02:55:49+08:00

    如果你的 python3 代码以以下内容开头:

    # /usr/bin/env python3
    

    那么你的代码将自动使用python3.12执行。

    如果你决定更新到 python3.15,那么你只需更新 python3 链接以指向 python3.15。然后你的所有代码都将运行 3.15。

    如果您对 3.15 版本有疑问,您可以将链接改回指向已知良好的 python3.12,而无需更改任何代码。

    • -2

相关问题

  • 在 cygwin/XP 下安装完整 Python 的最佳方式?

  • Mac OS X:从 python 脚本中更改 $PATH

  • 可以使用 easy_install 和 bdist_rpm 安装吗?

  • 我可以“注册”python 脚本以在 Windows 上执行吗?

  • 如何使用脚本远程重启 Windows 服务?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve