import contextlib import os import pathlib import sys import tempfile import zipfile @contextlib.contextmanager def _tmp_path(*args, **kwargs): with tempfile.TemporaryDirectory(*args, **kwargs) as tmp_dir: yield pathlib.Path(tmp_dir) def main(): with _tmp_path() as tmp_path: zip_path = tmp_path / "package.zip" with zipfile.ZipFile(zip_path, "w") as zfile: with zfile.open("module.py", "w") as f: f.write(b"def function():\n return 1\n") sys.path.append(os.fsencode(zip_path)) import module assert module.function() == 1 if __name__ == "__main__": sys.exit(main())