I know there is a way to import modules which are in a zip file with python. I created kind of custom python package library in a zip file.
I would like to put as well my "task" script in this package, those are using the library. Then, with bash, I would like to call the desired script in the zip file without extracting the zip.
The goal is to have only one zip to move in a specified folder when I want to run my scripts.
Python can work directly with data in ZIP files. You can look at the list of items in the directory and work with the data files themselves.
zip" # opening the zip file in READ mode with ZipFile(file_name, 'r') as zip: # printing all the contents of the zip file zip. printdir() # extracting all the files print('Extracting all the files now...') zip. extractall() print('Done! ')
I finally found a way to do this. If I create a zip file, I must create __main__.py
at the root of the zip. Thus, it is possible to launch the script inside the main and call if from bash with the following command :
python myArchive.zip
This command will run the __main__.py
file! :)
Then I can create .command
file to launch the script with proper parameters.
You can also put some code in the __main__.py
file to give you more flexibility if you need to pass arguments for example.
ex: python __main__.py buildProject
The reference documentation is here: https://docs.python.org/2/library/runpy.html
Have a look at zipimport. It should work directly from the install. You might have to do some work to make the pythonpath point to your zip file/directory.
This module adds the ability to import Python modules (*.py, *.py[co]) and packages from ZIP-format archives. It is usually not needed to use the zipimport module explicitly; it is automatically used by the built-in import mechanism for sys.path items that are paths to ZIP archives.that are paths to ZIP archives.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With