【问题标题】:How can I troubleshoot Python "Could not find platform independent libraries <prefix>"如何解决 Python“找不到与平台无关的库 <prefix>”
【发布时间】:2013-10-18 01:08:09
【问题描述】:

我正在尝试使用 Fontcustom 使用 svg 文件和 fontforge 创建图标字体。我在 OSX.7 上。但是,每当我运行程序时,我都会收到错误

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
ImportError: No module named site`

作为一个 Python/Unix 新手,我什至不知道从哪里开始尝试解决这个问题。任何人都可以提供任何建议吗? &lt;prefix&gt;&lt;exec_prefix&gt; 指的是什么?

当我输入python --version 时,我得到Python 2.7.1。在目录/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 中,有一个很大的模块列表,site.py 肯定在那个文件夹中。如何让我的计算机找到模块?

【问题讨论】:

  • 你使用的是 virtualenv 吗?
  • 在将 macOS x 更新到 Catalina 后,我遇到了类似的错误。 "ModuleNotFoundError: 没有名为 'encodings' 的模块"
  • 我遇到了类似的错误,但那是因为我没有正确设置 Python 路径。消除错误的设置

标签: python path importerror


【解决方案1】:

试试export PYTHONHOME=/usr/local。 Python 应该安装在 OS X 上的/usr/local 中。

这个答案比我预期的受到了更多的关注,我会添加更多的上下文。

通常,Python 在路径 prefix/libexec_prefix/lib 中查找其库,其中 prefixexec_prefix 是配置选项。如果设置了PYTHONHOME 环境变量,则从它继承prefixexec_prefix 的值。如果没有设置PYTHONHOME环境变量,那么prefixexec_prefix默认为/usr/local(而且我相信还有其他方法可以设置prefix/exec_prefix,但我并不完全熟悉他们)。

通常,当您收到错误消息Could not find platform independent libraries &lt;prefix&gt; 时,字符串&lt;prefix&gt; 将替换为prefix 的实际值。但是,如果 prefix 有一个空值,那么您会收到问题中发布的相当神秘的消息。获得空的prefix 的一种方法是将PYTHONHOME 设置为空字符串。有关PYTHONHOMEprefixexec_prefix 的更多信息,请访问the official docs

【讨论】:

  • 如果我使用两种不同的虚拟环境,我应该怎么做:一种用于 Python 2.7,一种用于 Python 3.6?
【解决方案2】:

把PYTHONHOME改成python的bin文件的父文件夹,比如/usr,就是/usr/bin的父文件夹。

【讨论】:

    【解决方案3】:

    我遇到了这个问题,花了几个小时试图解决它。我通过更改路径修复了前缀错误,但我仍然遇到编码导入错误。通过重新启动我的计算机已解决此问题。

    【讨论】:

      【解决方案4】:

      如果你创建了一个虚拟环境,然后删除了那个 python 安装,你会得到同样的错误。只需 rm -r 你的 venv 文件夹,然后使用有效的 python 位置重新创建它并执行 pip install -r requirements.txt 就可以了(假设你的 requirements.txt 正确)。

      【讨论】:

      • 当我将服务器从 Ubuntu 14.04 LTS 升级到 Ubuntu 16.04 LTS 时,这对我有用。我也不得不解决这个问题:stackoverflow.com/questions/36954983/…
      • cd &lt;virtual-env-dir&gt; 然后pipenv shell 然后pipenv --venv
      • 1.我得到了上述但不知道 在哪里?和 2.pipenv 给我:zsh: command not found: pipenv
      【解决方案5】:

      我的pycharm ce也有同样的错误,很容易修复,如果有人有这个错误,只需卸载并删除文件夹,如果在文档中找不到文件夹,请使用ctrl+h,重新安装软件并且应该再次工作。

      记得在擦除pycharm文件夹之前保存scratches文件夹。

      【讨论】:

        【解决方案6】:

        我在 Opensuse linux 上使用sudo make altinstall 安装的 Python 时遇到了这个问题。编译后的库似乎安装在/usr/local/lib64 中,但Python 正在/usr/local/lib 中寻找它们。

        我通过在/usr/local/lib中创建一个指向相关目录的动态链接解决了这个问题

        sudo ln -s /usr/local/lib64/python3.8/lib-dynload/ /usr/local/lib/python3.8/lib-dynload
        

        我怀疑最好的办法是将libdir 指定为configure 的参数(在构建过程开始时),但我没有这样测试过。

        编辑:可以确认./configure --libdir=/usr/local/lib 有效,并且可能比创建链接更好。

        【讨论】:

        【解决方案7】:

        使用sudo apt-get purge --auto-remove python3.(注意最后的点)为我解决了这个问题。
        可能,一些文件是从损坏的 python 版本中遗留下来的,并造成了冲突。上面的命令删除了剩下的所有内容。

        【讨论】:

          猜你喜欢
          • 2019-12-18
          • 2022-08-18
          • 2013-01-10
          • 2019-08-13
          • 1970-01-01
          • 2015-01-24
          • 1970-01-01
          • 2013-07-14
          • 1970-01-01
          相关资源
          最近更新 更多