我試圖在Mac上的Objective C Cocoa應用程序中嵌入Python 3解釋器,遵循this answer(它擴展了this article)中的指令並手動構建Python和PyObjC 。嵌入式Python 3在使用importlib時不創建.pyc文件
我希望能夠以插件的形式運行Python代碼。我特別不想依靠股票Apple Python(v2.7)。我大部分工作正常,但似乎無法可靠地加載插件腳本。它看起來像嵌入式Python解釋器無法創建__pycache__/*.pyc
文件。這可能是一種症狀或原因。如果我從Python3 REPL手動導入插件文件(通過import
或imp
或importlib
模塊),會生成.pyc文件,然後正確加載插件。如果我不手動執行此操作,則不會創建.pyc,並且我會收到一個ValueError "Unmarshallable object"
。
我試過放鬆對腳本目錄的權限無濟於事。該cache_tag看起來不錯,無論是從REPL和保鏢腳本中:
>>> sys.implementation.cache_tag
'cpython-35'
py_compile
引起了可可異常,如果我嘗試手動編譯插件文件(我還在挖成)。
我使用了以下內容:
- OS X 10.11.5(酋長)
- 的XCode 7.2.1
- 的Python V3.5.2
- PyObjC V3.11
我不得不做一些必要的調整,以鏈接的回答中列出的過程:
編譯Python 3個的要求自制的OpenSSL和zlib,並適當LDFLAGS的版本和CPPFLAGS:
./configure --prefix="/path/to/python/devbuild/python3.5.2" --with-ensurepip=install
有一個叉:
export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix zlib)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix zlib)/lib"
我也保證PIP配置Python來構建時,安裝OK原始文章來源(使用股票Python2)的工作正常here,所以我懷疑我不是太離譜。任何想法,我已經錯過了?我是否需要對嵌入式Python進行簽名或授予其權限?有沒有我忽略設置的複雜/配置選項?
TIA