簡體   English   中英

Py_Initialize引發ModuleNotFoundError:沒有名為“編碼”的模塊

[英]Py_Initialize throws ModuleNotFoundError: No module named 'encodings'

我正在嘗試在MacOS上的https://docs.python.org/3/extending/embedding.html#very-high-level-embedding上運行“在另一個應用程序中嵌入Python”示例。 雖然我可以使程序與我的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帖子中提供的建議, 如何通過將PYTHONHOME變量設置為/ usr / local,Anaconda根目錄以及該目錄的父目錄來解決Python“找不到與平台無關的庫<prefix>”的問題。 Python可執行文件。 我也嘗試將PYTHONPATH變量設置為每個文件夾。 但是,設置PYTHONHOME將導致我的Anaconda安裝Python崩潰,並顯示以下消息:

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

我沒有設置任何Python虛擬環境,並且在此嵌入示例之外並設置了PYTHONHOME變量,Python運行良好。 另外,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")

在該config文件夾中應該有一些動態庫,您可以在以下庫上運行otool:

otool -L libpython3.7.dylib

哪個應該打印鏈接器如何鏈接庫。

您可以在這里找到更多信息:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM