我正在尝试使用 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 安装,您将收到相同的错误。只需
rm -r
你的 venv 文件夹,然后使用有效的 python 位置重新创建它并执行 pip install -r requirements.txt
即可完成所有设置(假设你的requirements.txt正确)。
尝试
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
的更多信息,请参阅 官方文档。
我在 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
有效,并且可能比创建链接更好。
将PYTHONHOME修改为python的bin文件的父文件夹,如/usr,即/usr/bin的父文件夹。
我遇到了这个问题,花了几个小时试图解决它。我通过更改路径修复了前缀错误,但仍然遇到编码导入错误。通过重新启动计算机修复了此问题。
我的pycharm ce也有同样的错误,很容易修复它,如果有人有这个错误,只需卸载并删除该文件夹,使用
ctrl+h
如果您在文档中找不到该文件夹,请重新安装该软件,应该再次工作。
记得在删除pycharm文件夹之前先保存scratchs文件夹。