如何解决Python"无法找到平台无关库<前缀>"

Lar*_*ars 49 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`
Run Code Online (Sandbox Code Playgroud)

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

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

Pet*_*ano 42

如果您创建了虚拟环境,然后删除了该python安装,您将得到相同的错误.只是rm -r你的venv文件夹,然后用一个有效的python位置重新创建它,pip install -r requirements.txt并且你将全部设置(假设你有你的requirements.txt权限).

  • 当我将服务器从Ubuntu 14.04 LTS升级到Ubuntu 16.04 LTS时,这对我有用.我还必须解决这个问题:/sf/ask/2586848841/ (7认同)

jay*_*ren 33

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

这个答案比我预期的要多一些,我会补充一点上下文.

通常情况下,Python将其在路径库prefix/libexec_prefix/lib,其中prefixexec_prefix是配置选项.如果PYTHONHOME环境变量被设置,那么的值prefixexec_prefix从它继承.如果PYTHONHOME没有设置环境变量,然后prefixexec_prefix默认/usr/local(我相信还有其他方法来设置prefix/ exec_prefix为好,但我不完全熟悉它们).

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

  • 如果我使用两种不同的 virtualenv,我该怎么办:一种用于 Python 2.7,一种用于 Python 3.6? (2认同)

Dav*_*idW 8

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
Run Code Online (Sandbox Code Playgroud)

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

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


jim*_*mmy 6

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


Eri*_*ich 6

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

(我写了这个,以便下一个有这个问题的人不必像我一样花上几个小时.)