【问题标题】:how to temporarly change default python3 path如何临时更改默认 python3 路径
【发布时间】:2019-01-04 21:59:44
【问题描述】:

我正在运行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:

meson build中搜索python3的部分如下:

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

【问题讨论】:

  • 我建议只使用 one Python 3 安装。最好来自您使用的任何 UNIX/linux/OS-X(?) 发行版。
  • 我需要用于科学项目的 Anaconda 发行版,据我所知,它始终会安装自己的 Python 实例。
  • 我不确定,但由于#!/usr/bin/python3 标头,不应该使用/usr/bin 中的python3 运行python 脚本吗??
  • 是的。在 Linux 上,使用 #! 行中的可执行文件。

标签: python-3.x meson-build


【解决方案1】:

是命令update-alternatives (https://manpages.debian.org/jessie/dpkg/update-alternatives.8.en.html) 可以用吗。

也许这会有所帮助: How to update-alternatives to Python 3 without breaking apt?

编辑:

我更好的解决方案。使用virtualenv (https://pypi.org/project/virtualenv/)。 此命令将使用路径中的 python 版本为您创建环境。

  1. virtualenv --python=/path/to/python <name of project>
  2. cd <name of project>
  3. source bin/activate

执行此步骤后,您将进入虚拟环境。使用pip 安装需求。

【讨论】:

  • 从你发给我的链接我可以看到 $PATH 中的顺序很重要,我已经更新了我的问题以包含 PATH 变量
  • 我用新的、更好的想法编辑了我的答案。也许试试这个。
【解决方案2】:

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

标准脚本正在运行 find_program() 函数,其引用为 here

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

曾经:

python3 = find_program('python3')

更新后:

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

它解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-17
    • 2019-12-03
    • 2021-06-19
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-03
    • 2019-10-16
    相关资源
    最近更新 更多