Importing package with zip-archives

M

magnus.lycka

I'd like to have the following structure of my Python code:

I have a directory called 'mysystem'. In this directory, I have files
'comp1.zip' and 'comp2.zip' etc which are zipped archives with python
packages and modules.

I'd like to be able to use them like this in my code:

import mysystem.comp1.module
import mysystem.comp2.package.module

etc.

Can I do that? I guess it requires that the __init__.py in mysystem is
written in a clever way, but it's not clear how to do this, and I
don't find a lot on this in any Python books or on the net.

I tried:

mysystem/__init__.py:

import sys
import os
dir = os.path.abspath(os.path.dirname(__file__))
sys.path.insert(0, os.path.join(dir, 'comp1.zip'))
import comp1

That doesn't do what I want. To access comp1 with this __init__.py
I'll have to do

import mysystem
import comp1.module

instead of

import mysystem.comp1.module

:-(


Optionally, I'd like to be able to patch the system by putting a
module.py in mysystem/comp2/package/ and get that to override the
'package/module.py' in comp2.zip. It's OK if I need to patch
__init__.py in mysystem to do that.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top