95

我正在尝试使用 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 肯定在那个文件夹中。如何让我的计算机找到模块?

4

7 回答 7

67

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

于 2016-10-17T03:27:53.257 回答
53

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

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

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

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

于 2014-06-04T17:57:05.187 回答
9

sudo make altinstall在 Opensuse linux 上使用安装的 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

我怀疑更好的做法是将其指定libdirconfigure(在构建过程开始时)的参数,但我还没有以这种方式对其进行测试。

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

于 2020-01-30T11:48:58.510 回答
8

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

于 2016-03-23T08:28:14.280 回答
7

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

于 2016-04-29T01:07:32.280 回答
1

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

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

于 2018-10-12T20:04:09.233 回答
0

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

于 2021-10-15T17:22:05.777 回答