如何解决Python“无法找到平台无关库<前缀>”</prefix>

时间:2013-10-10 10:10:18

标签: python path importerror

我尝试使用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新手,我甚至不知道从哪里开始尝试解决这个问题。有人可以提供任何建议吗? <prefix><exec_prefix>指的是什么?

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

7 个答案:

答案 0 :(得分:38)

如果您创建了虚拟环境,然后删除了该python安装,您将收到相同的错误。只需rm -r您的venv文件夹,然后使用有效的python位置重新创建它并执行pip install -r requirements.txt并且您将全部设置(假设您的requirements.txt正确)。

答案 1 :(得分:26)

试试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 / {{ 1}},但我并不完全熟悉它们。)

通常,当您收到错误消息exec_prefix时,字符串Could not find platform independent libraries <prefix>将替换为<prefix>的实际值。但是,如果prefix的值为空,那么您会在问题中发布相当神秘的消息。获取空prefix的一种方法是将prefix设置为空字符串。 PYTHONHOME提供了有关PYTHONHOMEprefixexec_prefix的更多信息。

答案 2 :(得分:6)

将PYTHONHOME更改为python bin文件的父文件夹,例如/ usr,这是/ usr / bin的父文件夹。

答案 3 :(得分:5)

我遇到了这个问题并花了几个小时试图修复它。我通过更改路径修复了前缀错误,但仍然有编码导入错误。这是通过重新启动我的电脑来解决的。

(我写这篇文章是为了让下一个有这个问题的人不必像我一样花上几个小时。)

答案 4 :(得分:2)

在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的参数(在构建过程开始时),但是我还没有那样进行测试。

答案 5 :(得分:1)

我的pycharm ce有相同的错误,很容易修复,如果有人出错,只需卸载并删除文件夹,如果在文档中找不到该文件夹​​,请使用ctrl+h安装再次使用软件,并且应该可以再次使用。

在删除pycharm文件夹之前,请记住保存草稿文件夹。

答案 6 :(得分:-1)

当第一个python脚本是#!/usr/bin/env python时,可能是/usr/bin/env问题。您可以运行/usr/bin/env以查看是否有错误,如果错误运行,您可以使用yum更新/ usr / bin / env(依此类推)安装coreutils。