首页 > 解决方案 > 如何临时更改默认 python3 路径

问题描述

我正在运行meson build,它需要安装许多 python3 库。在我的系统上,默认的 python3 安装当前指向

$ which python3
/home/myuser/anaconda3/bin/python3

该构建需要安装 python3-gi 包,该包已使用 synaptic 包管理器安装

apt-cache policy python3-gi
python3-gi:
  Installed: 3.22.0-2
  Candidate: 3.22.0-2
  Version table:
 *** 3.22.0-2 500
        500 http://ftp.pl.debian.org/debian stretch/main amd64 Packages
        100 /var/lib/dpkg/status

我不确定这个包是为哪个安装安装的,因为我还有其他 python3 安装:

   $ whereis python3
    python3: /usr/bin/python3.5m-config /usr/bin/python3.5 /usr/bin/python3.5-config /usr/bin/python3.5m /usr/bin/python3 /usr/lib/python3.5 /usr/lib/python3 /etc/python3.5 /etc/python3 /usr/local/lib/python3.5 /usr/include/python3.5 /usr/include/python3.5dm /usr/include/python3.5m /usr/share/python3 /home/myuser/anaconda3/bin/python3.7m /home/myuser/anaconda3/bin/python3.7m-config /home/myuser/anaconda3/bin/python3.7 /home/myuser/anaconda3/bin/python3.7-config /home/myuser/anaconda3/bin/python3 /usr/share/man/man1/python3.1.gz

我得到的介子错误如下:

Program python3 found: YES (/home/myuser/anaconda3/bin/python3)

meson.build:244:4: ERROR:  Problem encountered: Error: missing dependency python gobject introspection (python3-gi)

生成该错误是因为构建正在运行以下代码以检查是否安装了 python 依赖项:

    #!/usr/bin/python3

    import sys
    import os
    err = 0

    try:
        import gi
    except ImportError:
        print("Error: missing dependency python gobject introspection (python3-gi)")
        err = 1
sys.exit(err)

我不知道如何解决这个问题,我怀疑 python3-gi 包已安装到系统 python3 位置,但默认指向 anaconda 安装,因此当介子构建脚本调用它时无法识别。

我不是一个有经验的 Linux 用户,也不是非常热衷于 python,所以我需要你的建议如何解决这个问题,以免弄乱 Anaconda 安装。目标是成功完成构建并保持当前配置。

编辑:

PATH 变量如下(我怀疑目录的顺序很重要):

echo $PATH
/home/sebastian/anaconda3/bin:/home/sebastian/perl5/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

编辑2:

正在搜索python3的介子构建部分如下:

python3 = find_program('python3')
  r = run_command([python3, 'po/test-deps'])
  if r.returncode() != 0
    error(r.stdout())
  endif

标签: python-3.xmeson-build

解决方案


我更改了meson.build文件,即脚本搜索 python3 的部分。

标准脚本正在运行find_program()参考这里的函数

我已经更改了它,以便首先在默认系统位置查找 python3,然后按名称查找程序:

曾是:

python3 = find_program('python3')

更新后:

python3 = find_program('/usr/bin/python3','python3')

它解决了这个问题。


推荐阅读