Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python for ios interpreter [duplicate]

Tags:

python

ios

Possible Duplicate:
Python or Ruby Interpreter on iOS

I just discovered this apps pypad and python for ios

They have like an interpreter an editor

So which app would you recomend

But most importantly, how does this interpreter work, and where can i see an example of how the obj c and python get to work togheter?

Thanks!

like image 641
manuelBetancurt Avatar asked Mar 17 '12 10:03

manuelBetancurt


People also ask

Is it possible to run Python on iOS?

Python for iOS and iPadOSPyto also provides a complete development environment for running Python 3 including many third-party libraries and system integration on an iPad or iPhone.

Can I do Python programming on iPad?

Pyto is a Python 3.10 IDE for iPhone and iPad. Run code directly on your device and offline. You can run scripts from Shortcuts and code your own home screen widgets. and more!

What can I do with Pythonista?

You can write scripts that access sensor and location data, your photo library, contacts, reminders, the clipboard, and much more. You can also use Pythonista to build interactive multi-touch experiences, custom user interfaces, animations, and 2D games.


1 Answers

I am the sole creator of Python for iOS so that is of course what I would recommend, but a good indicator for your personal decision is the reviews & ratings of each App. It took me weeks to figure out how to properly integrate python into Objective-c for this App but here is the best resource to get you started (keep in mind that ObjC is just a superset of C):

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


Also, here is an example of calling a function defined in myModule. The equivient python would be:

import myModule
pValue = myModule.doSomething()
print pValue

In Objective-c:

#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);
}

For much more documentation check out: Extending and Embedding the Python Interpreter

like image 169
chown Avatar answered Sep 29 '22 06:09

chown