gpt4 book ai didi

python - Py_Initialize 抛出 ModuleNotFoundError : No module named 'encodings'

转载 作者:行者123 更新时间:2023-11-30 16:22:04 26 4
gpt4 key购买 nike

我正在尝试在另一个应用程序示例中运行嵌入Python,该示例位于 https://docs.python.org/3/extending/embedding.html#very-high-level-embedding在我的 MacOS 上。虽然我可以使用我的 Python3.7 和 SCons 的 Anaconda 发行版来编译该程序,但运行它总是会抛出以下错误:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

我已经尝试过此 StackOverflow 帖子 How can I troubleshoot Python "Could not find platform independent libraries <prefix>" 中给出的建议,通过将我的 PYTHONHOME 变量设置为/usr/local、我的 Anaconda 根目录和 Python 可执行文件的父目录。我还尝试将 PYTHONPATH 变量设置为每个文件夹。但是,设置 PYTHONHOME 将导致我的 Python Anaconda 安装崩溃并显示以下消息:

Fatal Python error: initfsencoding: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

我没有设置任何 Python 虚拟环境,并且 Python 在该嵌入示例和设置 PYTHONHOME 变量之外运行良好。另外,Anaconda Python 二进制文件的父文件夹是我的 PATH 变量中的第一个文件夹,所以我知道 Py_Initialize 不会首先找到 Python 的默认 MacOS 安装。我尝试卸载并重新安装 Anaconda,但同样的错误仍然存​​在。以下代码是我用于编译示例的 SConstruct 文件。

env = Environment(
CPPPATH=[
"/Users/user/anaconda3/include",
"/Users/user/anaconda3/include/python3.7m"
],
LIBPATH=["/Users/user/anaconda3/lib/python3.7/config-3.7m-darwin"],
LIBS=["dl", "python3.7m"]
)

env.Program("wrapper", "wrapper.c")

感谢任何帮助或建议。谢谢。

最佳答案

这将取决于 python 库的设置方式。我假设他们正在使用 RPATH,在这种情况下你可以使你的环境像这样:

env = Environment(
CPPPATH=[
"/Users/user/anaconda3/include",
"/Users/user/anaconda3/include/python3.7m"
],
LIBPATH=["/Users/user/anaconda3/lib/python3.7/config-3.7m-darwin"],
LIBS=["dl", "python3.7m"],
LINKFLAGS='-rpath /Users/user/anaconda3/lib/python3.7/config-3.7m-darwin'
)

env.Program("wrapper", "wrapper.c")

在该配置文件夹中应该有一些动态库,您可以在其中运行 otool:

otool -L libpython3.7.dylib

这应该打印链接器如何链接库。

您可以在此处找到更多信息:

https://stackoverflow.com/a/31824839/1644736 https://wincent.com/wiki/@executable_path,_@load_path_and_@rpath

关于python - Py_Initialize 抛出 ModuleNotFoundError : No module named 'encodings' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com