簡體   English   中英

在Mac上嵌入python ModuleNotFoundError:沒有名為“ encodings”的模塊

[英]python embedding on Mac ModuleNotFoundError: No module named 'encodings'

我目前無法使用Cython嵌入功能。 二進制文件編譯良好,並且otool -L embedded返回以下結果。

embedded:
        @rpath/libpython3.6m.dylib (compatibility version 3.6.0, current version 3.6.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)

/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)

這是我運行的命令。 有什么想法為什么這不起作用? 當我想創建一個Cython模塊時,使用setup.py的Cython可以很好地工作,即,我能夠在Python中導入Cython模塊。

$ make

gcc -c embedded.c -I/Users/$USER/miniconda3/include/python3.6m -I/Users/$USER/miniconda3/include/python3.6m
gcc -o embedded embedded.o -L/Users/$USER/miniconda3/lib -L/Users/$USER/miniconda3/lib/python3.6/config-3.6m-darwin -lpython3.6m -ldl  -framework CoreFoundation  -Wl,-stack_size,1000000  -framework CoreFoundation

$ ./embedded

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: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x000000010f8113c0 (most recent call first):
[1]    32931 abort      ./embedded

建議?

您基本上是在嘗試將Python本機代碼擴展作為獨立的二進制文件運行而沒有Python解釋器。 這將永遠行不通。

Cython擴展代碼生成Python解釋器的擴展。

它們是共享模塊,只能在運行的Python解釋器中加載。 它們不能用作獨立的二進制文件。

如果要制作和分發帶有或不帶有擴展名的獨立Python代碼二進制文件,則解釋器將與代碼捆綁在一起-請參閱cx_freeze

暫無
暫無

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

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