Salut à tous,
Depuis peu pour un projet d'éditeur/lecteur pour ZDS, je dois transformer un texte au format markdown au format HTML. Mon programme tourne en c (Objective-c pour être précis mais peut importe car on peut utiliser du code c dans du code objective-c ). J'ai créé une fonction python dans un fichier à part.
1 2 3 4 5 6 7 | from markdown import Markdown from markdown.extensions.zds import ZdsExtension from smileys_definition import smileys def markdown_python(markdown_string): render = Markdown(extensions=(ZdsExtension({'inline': False, 'emoticons': smileys}),),safe_mode = 'escape', enable_attributes = False, tab_length = 4, output_format = 'html5', smart_emphasis = True, lazy_ol = True).convert(markdown_string) return render |
Jusqu'à là rien de sorcier.
Le module markdown
gère des dépendances qui sont : __future__
, codecs
…
Les ressources (image, fichier python…) des applications Cocoa généré par xCode sont dans le fichier Resources
. Quand mon application s'execute, j'ai bien mes fichiers python mais j'ai une erreur d'import.
Le code c :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include "ZDSMarkdown.h" PyObject *module, *argument, *function, *ret; void renderMarkdown(char *markdown){ Py_NoSiteFlag = 1; Py_FrozenFlag = 1; Py_IgnoreEnvironmentFlag = 1; char buf[2048]; //Variable (mal nommée) du chemin où se trouve les fichiers python getcwd(buf, sizeof(buf)); strcat(buf, "/iZeste.app/Contents/Resources"); printf("%s\n",buf); Py_SetPythonHome(buf); Py_Initialize(); printf("%s\n", PY_VERSION); PySys_SetPath(buf); module = PyImport_ImportModule("markdownHtml"); if (module){ argument = Py_BuildValue("(s)", markdown); function = PyObject_GetAttrString(module,"markdown_python"); ret = PyEval_CallObject(function, argument); if (PyString_Check(ret)){ printf("%s", PyString_AS_STRING(ret)); } } PyErr_Print(); Py_DECREF(function); Py_DECREF(module); Py_DECREF(argument); Py_DECREF(ret); Py_Finalize(); } |
La fonction PyErr_Print();
me sort :
1 2 3 4 5 6 | Traceback (most recent call last): File "/Users/Cirdo/Library/Developer/Xcode/DerivedData/iZeste-dycjahkgbpkxjmbmznckrqticjxv/Build/Products/Debug/iZeste.app/Contents/Resources/markdownHtml.py", line 1, in <module> from markdown import Markdown File "/Users/Cirdo/Library/Developer/Xcode/DerivedData/iZeste-dycjahkgbpkxjmbmznckrqticjxv/Build/Products/Debug/iZeste.app/Contents/Resources/markdown/__init__.py", line 33, in <module> from __future__ import absolute_import ImportError: No module named __future__ |
Il me trouve pas le module __future__
.
Où est ce module ? Comment faire pour l'intégrer ?