如何排除 Python“无法找到平台独立库 <prefix>”的故障

问题描述 投票:0回答:6

我正在尝试使用 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

这里的

<prefix>
<exec_prefix>
是什么意思?我该如何解决这个问题?

在我的系统上,

python --version
报告
Python 2.7.1
。我查了对应的库目录
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
,里面有
site.py
。为什么找不到该模块?

python path importerror
6个回答
75
投票

如果您创建了虚拟环境,然后删除了该 python 安装,您将收到相同的错误。只需

rm -r
你的 venv 文件夹,然后使用有效的 python 位置重新创建它并执行
pip install -r requirements.txt
即可完成所有设置(假设你的requirements.txt正确)。


64
投票

尝试

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

这个答案比我预期的受到更多关注,我会添加更多背景信息。

通常,Python 在路径

prefix/lib
exec_prefix/lib
中查找其库,其中
prefix
exec_prefix
是配置选项。如果设置了
PYTHONHOME
环境变量,则
prefix
exec_prefix
的值将从它继承。如果未设置
PYTHONHOME
环境变量,则
prefix
exec_prefix
默认为
/usr/local
(我相信还有其他方法可以设置
prefix
/
exec_prefix
,但我并不完全同意)熟悉他们)。

通常,当您收到错误消息

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


11
投票

我在 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
有效,并且可能比创建链接更好。


9
投票

将PYTHONHOME修改为python的bin文件的父文件夹,如/usr,即/usr/bin的父文件夹。


6
投票

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


1
投票

我的pycharm ce也有同样的错误,很容易修复它,如果有人有这个错误,只需卸载并删除该文件夹,使用

ctrl+h
如果您在文档中找不到该文件夹,请重新安装该软件,应该再次工作。

记得在删除pycharm文件夹之前先保存scratchs文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.