为什么 Python 版本之间存在冲突?

为什么 Python 版本之间存在冲突?

我知道 ubuntu 18.04 LTS 需要 python 3.6 来完成很多工作,但我需要运行很多 python 3.7 应用程序,我不明白为什么它们之间会有冲突,我不得不检查所有未运行的程序并将行更改为,我不确定是否还有一些/usr/bin文件#!/usr/bin/python3需要#!/usr/bin/python3.6更改,我担心有一天我的电脑会因此无法启动 :(

有没有办法消除这种冲突并仅使用 python3 命令来完成所有操作?

PS:我搜索了很多,但一无所获,所以如果这是一个重复的问题,我很抱歉

谢谢大家 :)

编辑:

这是我用python3.7运行系统程序时的错误日志输出

Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 28, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 11, in <module>
    from softwareproperties.SoftwareProperties import SoftwareProperties, shortcut_handler
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 28, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

如果我使用 3.6 版本运行需要 3.7 版本的应用程序,情况也是一样。

答案1

您好,我不太确定您遇到了什么冲突。为什么您需要更改 /usr/bin 中的那些文件才能使用 3.6?您遇到了什么错误,python3 现在指向什么?

“python3”通常只是一个链接,一个指向系统上特定 Python 版本的指针。如果您需要使用不同的 Python 版本,有几种不同的方法可以做到。我将提到我常用的三种:

  1. 使用虚拟环境,例如 conda。安装 conda 时,您基本上会为虚拟环境创建一个管理器,您可以在其中安装 python 模块甚至 python/pip 版本,而不会对外部系统产生任何影响。我建议您去检查一下 conda,特别是如果您担心更改 python 内容会破坏您的系统。

  2. 使用特定的 Python 版本运行脚本,例如

    python3.7 my_script.py

如果你确实想使用 python3,你可以在 ~/.bashrc (或 ~/.zshrc 等) 中创建一个别名

alias python3="/usr/bin/python3.7"

要检查哪些二进制文件响应 python 命令运行

whereis python

这将为您提供所有二进制文件的路径,您可以使用它们来创建像上面一样的别名。您还可以使用这些来获取更精确的信息:

whereis python3
which python3
which python3.7
  1. 将 shebang 添加到您的脚本中并使其可执行,这可能不太可移植,而且您似乎已经了解它了。

相关内容