Usual procedure is to paste the library in your application's path then upload it with your application using appcfg - update.
This works but sometimes we have to deal with huge libraries consisting of hundreds of python files that sometimes exceed the upper limit of 1000 files / application limit or reduce the number of available files for your application. Also maintaining those files becomes a nightmare.
So what is the proper way ? :
Well Python's import works straight from the box with a zip file as well, if it finds it your sys.path it treats it as a directory. (for more complicated situations you can look at zipimport module)
Compress the library in a zip file.
You can optionally include an empty "__init__.py" in each directory (if not there already) so it can be treated as a normal python package.
Paste just the zip file in your application - or better put it somewhere and only paste a link to this file in your applications directory (this way you can maintain the library in a single place and use it on many applications)
Then whenever you want to import from that library you can use something like :
This works but sometimes we have to deal with huge libraries consisting of hundreds of python files that sometimes exceed the upper limit of 1000 files / application limit or reduce the number of available files for your application. Also maintaining those files becomes a nightmare.
So what is the proper way ? :
Well Python's import works straight from the box with a zip file as well, if it finds it your sys.path it treats it as a directory. (for more complicated situations you can look at zipimport module)
Compress the library in a zip file.
You can optionally include an empty "__init__.py" in each directory (if not there already) so it can be treated as a normal python package.
Paste just the zip file in your application - or better put it somewhere and only paste a link to this file in your applications directory (this way you can maintain the library in a single place and use it on many applications)
Then whenever you want to import from that library you can use something like :
import sys
import os
myLibrary= os.path.dirname(__file__)+'/mylibrary.zip'
#(os.path.dirname(__file__) gives you the directory of currently executing script)
if not mylibrary in sys.path:sys.path.insert(0, mylibrary)
#(or sys.path.append(mylibrary)
import mylibrary
Thats it !import os
myLibrary= os.path.dirname(__file__)+'/mylibrary.zip'
#(os.path.dirname(__file__) gives you the directory of currently executing script)
if not mylibrary in sys.path:sys.path.insert(0, mylibrary)
#(or sys.path.append(mylibrary)
import mylibrary
No comments:
Post a Comment