I am new to Google Cloud Platform and in my whole I have been working on Python 3. I am trying to find out which version of Python is more complete for Google App Engine: Python 2.7 or Python 3.
As I'm starting to work with Google App Engine I have realised that continuing using Python 3 seems too painful as basic tools like dev_appserver.py are written for Python 2 only. Now I am hitting the opposite problem: cloudstorage module seems to exist only for python3. Again, when I install it, seems the only way I can test read/write to google bucket locally is by authenticating with google.appengine.ext, which in turn only works within dev_appserver.py or remotely. This leaves me confused which environment to chose.
What is a general agreement / what is the focus of Google App Engine: Python 2 or Python 3?
In App Engine, you have to options: the Standard environment and the Flexible environment.
Python 2.7 is available in both Standard and Flexible, while Python 3.6 is only available in Flexible.
Also, the choice between Standard and Flexible depends on what you want to do/what libraries you need:
There are some third-party libraries already built-in in the Standard Environment, and you can include other libraries, but, those libraries can't include C extensions, they must be written in pure Python. If you need libraries with C extensions, you will have to move to Flexible.
In Standard, you can use propietary libraries (like google.appengine.ext, as you mentioned) to do tasks like accessing databases, while in Flexible you can use other libraries (like the client you mentioned).
There are also another important differences, like pricing, scaling, etc. The choice will depend, as I said, in your needs for your application.
EDIT
dev_appserver.py is only used when developing in Standard. There is a tutorial in here, with Flask. If you are in Flexible, you can test the app locally as if you were running as usual a python file, like in this other example.
You can use buckets in both Standard and Flexible
The python3-only cloudstorage support assumption based on the SO post you referenced is not correct:
the import appears to be done in a regular python shell or as a standalone script, not from a standard environment GAE app - different things, see import cloudstorage, ImportError: No module named google.appengine.api.
it is not specified where that library comes from
GCS is definitely supported in the standard env GAE (i.e. on python 2), you just need to follow the steps from the official documentation: Setting Up Google Cloud Storage and Reading and Writing to Google Cloud Storage.
Both were good. But the question is what kind of environment do you want? Standard environment or Flexible environment.
Find your answer in this document: https://cloud.google.com/appengine/docs/python/
It kind of depends on what you're using it for. If you're doing data science, for example, I'm seeing a few notices of Python libraries that are (finally) dropping support for Python 2. numpy is one that is dropping support.
Generally speaking, I would recommend Python 3 over Python 2. Why spend time developing in an aging version when its replacement has matured nicely and is more consistent?
I'm newbie in programming and need some help in the following situation.
I want to use gevent library on Google App Engine. I'm writing in Python using webapp2.
So the question is how to configure it so that it will work with GAE SDK.
I've put gevent library files in my projects directory like other libraries which are working well in this project. But when I run my app on local server it says:
ImportError: No module named greenlet
I've installed it on my computer,
pip install greenlet -t way/to/python/lib/directory
still it doesn't work
I had similar problem with lxml library, but It was solved after I've written its name in app.yaml. But lxml is preinstalled on GAE as written here. Although it's not the case with gevent.
I would appreciate any help. Thanks!
Can somebody explain me how to use the setuptools inside python in google app engine to implement WSGIProxy for a webapp.
How do i utilize it, if i dont have access to the filesystem? Specifically,easy steps on how install package from python egg on GAE.
This should be relatively easy for someone who has used setuptools or installed 3rd party packages on GAE python.
I just answered almost the same question, but about a different library. The concept behind installing thirdparty libraries is exactly the same though, you need to either put a copy of the actual code in your app folder, or use a softlink to in.
GAE - Including external python modules without adding them to the repository?
I'm currently looking around to find what's allow and what's not in GAE.
Using the Google's Developers website, I found that _socket C Libraries and the socket module are not allowed on GAE.
How did they disable these modules? Did they performed a complete rebuild of the python interpreter or did they developed their own (like pypy)?
You don't really need to rebuild the whole python interpeter just to disable modules, you can (for example) delete the libraries or (as AppEngine did) or have a import hook that will check for loaded module and have a whitelist of modules which are allowed to be loaded.
Does poster.encode module supported in python appengine ??
if No , whats is the possible alternatives ?
You'd need to deploy the module with your code by including it in your application's directory when deploying, but it does appear to be a pure python module and looking through the source I see no reason why it wouldn't work just fine in App Engine.
The only modules that won't work are those that use C extensions or make use of features like threads, sockets, etc. that are disabled in the App Engine runtime. poster.streaminghttp, for example, almost certainly won't work, as it uses sockets.
from what I see in https://bitbucket.org/chrisatlee/poster/src/bd5ab4c5005c/poster/encode.py I doesn't see any class that would be forbidden by google app engine. Just upload it as any of your own code.