Я пытаюсь внедрить интерпретатор Python 3 в приложение Objective C Cocoa на Mac, следуя инструкциям в this answer (который расширяет this article) и строит Python и PyObjC вручную ,Embedded Python 3 не создает файлы .pyc при использовании importlib
Я хотел бы иметь возможность запускать код Python в качестве плагинов. Я специально не хочу полагаться на акции Apple Python (v2.7). Я больше всего работаю, но не могу надежно загрузить скрипты плагинов. Похоже, что встроенный интерпретатор Python не может создать файлы __pycache__/*.pyc
. Это может быть признаком или причиной. Если я импортирую файл плагина вручную из Python3 REPL (через import
или imp
или importlib
), будет создан .pyc, и плагин затем загрузится правильно. Если я не сделаю это вручную, .pyc не будет создан, и я получу ValueError "Unmarshallable object"
.
Я пробовал разрешать разрешения в каталоге сценариев безрезультатно. Cache_tag выглядит хорошо, как с РЕПЛ и из сценария вышибала:
>>> sys.implementation.cache_tag
'cpython-35'
py_compile
вызывает исключение какао, если я пытаюсь скомпилировать файл плагина вручную (я все еще копаться в этом).
Я использую следующее:
- OS X 10.11.5 (El Capitan)
- XCode 7.2.1
- Python v3.5.2
- PyObjC v3.11
Мне пришлось сделать пару необходимых изменений для процесса, описанного в связанном ответе SO:
Компиляция Python 3 необходимые Homebrew версии OpenSSL и Zlib, а также соответствующие LDFLAGS и CPPFLAGS:
export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix zlib)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix zlib)/lib"
Я также обеспечить пип установлен ОК при настройке Python для создания:
./configure --prefix="/path/to/python/devbuild/python3.5.2" --with-ensurepip=install
Существует вилка исходного источника статьи (который использует запас Python2), который отлично работает here, поэтому я подозреваю, что не слишком далеко от знака. Любая идея, что я пропустил? Мне нужно подписать или иным образом разрешить встроенный Python? Есть ли варианты настройки/конфигурации, которые я забыл установить?
TIA