2012-03-17 5 views
7

可能な重複インタプリタ:私は、これは彼らが通訳エディタのPython

のように持っているので、pypadpython for ios

をアプリ発見
Python or Ruby Interpreter on iOS

をアプリをお勧めしますか?

しかし、最も重要なのは、このインタープリタはどのように動作するのですか?また、obj cとpythonがどうやってtogheterになるのかの例はどこにありますか?

ありがとうございます!

答えて

11

私はPython for iOSの唯一の作成者ですので、もちろん私がお勧めするものですが、あなたの個人的な決定のための良い指標は、各アプリケーションの評価&です。これは、適切に、このアプリケーションのためのObjective-Cへのpythonを統合する方法を見つけ出すために数週間かかりましたが、ここで(にObjCはCだけのスーパーセットであることに注意してください)あなたが始めるための最良のリソースです:

http://docs.python.org/c-api/


また、myModuleで定義された関数を呼び出す例を示します。 equivientパイソンは次のようになります。

Objective-Cで
import myModule 
pValue = myModule.doSomething() 
print pValue 

#include <Python.h> 

- (void)example { 

    PyObject *pName, *pModule, *pDict, *pFunc, *pArgs, *pValue; 
    NSString *nsString; 

    // Initialize the Python Interpreter 
    Py_Initialize(); 

    // Build the name object 
    pName = PyString_FromString("myModule"); 

    // Load the module object 
    pModule = PyImport_Import(pName); 

    // pDict is a borrowed reference 
    pDict = PyModule_GetDict(pModule); 

    // pFunc is also a borrowed reference 
    pFunc = PyDict_GetItemString(pDict, "doSomething"); 

    if (PyCallable_Check(pFunc)) { 
     pValue = PyObject_CallObject(pFunc, NULL); 
     if (pValue != NULL) { 
      if (PyObject_IsInstance(pValue, (PyObject *)&PyUnicode_Type)) { 
        nsString = [NSString stringWithCharacters:((PyUnicodeObject *)pValue)->str length:((PyUnicodeObject *) pValue)->length]; 
      } else if (PyObject_IsInstance(pValue, (PyObject *)&PyBytes_Type)) { 
        nsString = [NSString stringWithUTF8String:((PyBytesObject *)pValue)->ob_sval]; 
      } else { 
        /* Handle a return value that is neither a PyUnicode_Type nor a PyBytes_Type */ 
      } 
      Py_XDECREF(pValue); 
     } else { 
      PyErr_Print(); 
     } 
    } else { 
     PyErr_Print(); 
    } 

    // Clean up 
    Py_XDECREF(pModule); 
    Py_XDECREF(pName); 

    // Finish the Python Interpreter 
    Py_Finalize(); 

    NSLog(@"%@", nsString); 
} 

はるかドキュメントのチェックアウトの場合:Extending and Embedding the Python Interpreter

+0

HI男おかげでたくさん、私はiOSアプリ用のPythonを得て、それを愛していますが、私はGitのハブリンクへの参照が何であるか疑問を持っています隠し機能?、おかげでたくさん!、素晴らしい仕事! – MaKo

+0

https://github.com/pudquick/PythonForiOSPatches不足している組み込みモジュールは何ですか?ホーをインストールするには?ありがとう – MaKo

+0

ああ、これはユーザーがv1.1用に作成したものですが、私はv1.2で実装しました。 – chown