【问题标题】:Can't import python package installed with pacman on Arch Linux无法在 Arch Linux 上导入使用 pacman 安装的 python 包
【发布时间】:2018-02-15 15:37:37
【问题描述】:

每当我尝试导入通过 pacman 安装的 python 包时,我都会收到错误消息

ModuleNotFoundError: No module named [packageName]

过去,我只是通过 pip 安装我需要的软件包来解决这个问题,这工作正常。但是,在这种情况下,这不是一个选择

这里有一些可能有用的信息 - 我不确定这些信息的哪些部分是相关的,但无论如何:

  • 运行python 告诉我我的版本是Python 3.6.4 |Anaconda, Inc.
  • which python 的输出为/home/username/miniconda3/bin/python
  • 我的 ~/.bashrc 中有 export PATH="/home/username/miniconda3/bin:$PATH"
  • 运行import sysprint(sys.path) 给出['', '/home/username/miniconda3/bin', '/home/username/miniconda3/lib/python36.zip', '/home/username/miniconda3/lib/python3.6', '/home/username/miniconda3/lib/python3.6/lib-dynload', '/home/username/miniconda3/lib/python3.6/site-packages', '/home/username/miniconda3/lib/python3.6/site-packages/Mako-1.0.7-py3.6.egg', '/home/username/miniconda3/lib/python3.6/site-packages/IPython/extensions', '/home/username/.ipython']

(如果你没有猜到,我对 Arch 很陌生,对 Python 没有特别的经验,所以我会很感激任何帮助)

【问题讨论】:

  • python -c import sys; print(sys.path) 返回什么?
  • pacman 是 linux 包的包管理器。使用pip安装python包。
  • @MEE:pacman提供python包,安装使用没有错。您可以同时使用与pacmanpip 一起安装的软件包(使用--user 选项)。最重要的是,某些软件包(几乎)无法使用 pip 安装(请参阅 PyQt4)。
  • @MEE 在 archlinux 中是 preferred 使用 pacman 安装 python 包(如果在 arch 存储库中可用)。

标签: python archlinux pacman-package-manager


【解决方案1】:

Anaconda 的 Python 解释器与系统隔离。 如果您在系统范围内安装任何东西,Anaconda 的 Python 将无法找到它。

如果您想/需要使用 Anaconda,您有两种选择:

  • 使用conda
  • 使用 Anaconda 附带的 pip(很可能是您正在使用的版本)

否则不要使用 Anaconda:从您的 PATH 中删除 /home/username/miniconda3/bin/python 并使用系统 python(应该类似于 /usr/bin/python)。系统 python 知道在哪里查找使用系统包管理器安装的包,例如packman)

【讨论】:

  • 切换到/usr/bin/python的问题是我有很多包,比如Pytorch,只能通过conda安装。切换后有什么办法可以访问这些吗?
  • 理论上可能可行,但您自找麻烦。您应该能够欺骗 python 设置 PYTHONPATH 以指向您要使用的包。但是 Anaconda 提供了自己的库(.so 和 .a 文件),它们可能与 archlinux 提供的库不兼容,并且很有可能最终导致库冲突。此外,根据我的经验,使用PYTHONPATH 会带来更多的麻烦
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 2017-01-24
  • 2017-12-20
  • 2014-08-02
  • 1970-01-01
相关资源
最近更新 更多