J'essaie d'intégrer un interpréteur Python 3 dans une application Cocoa Objective C sur un Mac, en suivant les instructions dans this answer (qui s'étend this article) et en construisant Python et PyObjC à la main . Je voudrais être en mesure d'exécuter du code Python en tant que plugins.Python 3 intégré ne crée pas de fichiers .pyc lors de l'utilisation de importlib
Je ne veux surtout pas compter sur le stock Apple Python (v2.7). J'ai la plupart de travail mais ne peut pas sembler charger de manière fiable les scripts de plugin. Il semble que l'interpréteur Python intégré ne puisse pas créer les fichiers __pycache__/*.pyc
. Cela peut être un symptôme ou une cause. Si j'importe le fichier du plugin manuellement depuis le Python3 REPL (via les modules import
ou imp
ou importlib
), le .pyc est généré et le plugin se charge correctement. Si je ne le fais pas manuellement, le .pyc n'est pas créé et je reçois un ValueError "Unmarshallable object"
.
J'ai essayé d'assouplir les autorisations sur le répertoire de script en vain. Le cache_tag semble OK, tant du REPL et à partir du script videur:
>>> sys.implementation.cache_tag
'cpython-35'
py_compile
déclenche une exception Cocoa si je tente de compiler manuellement le fichier plug-in (je creuser encore en cela).
J'utilise les éléments suivants:
- OS X 10.11.5 (El Capitan)
- XCode 7.2.1
- Python
- SSL 3.5.2 PyObjC v3.11
J'ai dû faire quelques ajustements nécessaires au processus décrit dans la réponse SO liée:
Compiling Python 3 nécessaires versions Homebrew de OpenSSL et zlib, et LDFLAGS et CPPFLAGS appropriés:
export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix zlib)/include"
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix zlib)/lib"
Je veillons également à ce pip est installé OK lors de la configuration Python pour construire:
./configure --prefix="/path/to/python/devbuild/python3.5.2" --with-ensurepip=install
Il y a une fourchette de la source de l'article original (qui utilise le stock Python2) qui fonctionne bien here, donc je pense que je ne suis pas trop loin de la marque. Une idée de ce que j'ai manqué? Dois-je signer ou autoriser le Python intégré? Existe-t-il des options de complétion/configuration que j'ai négligé de définir?
TIA