-
2024.09.17
download_python
remove defaultstripped
keywordtest_utils.py
usetest_cache/
folder to avoid conflict
-
2024.08.07
- [Compatible WARNING]: update
sys_paths
insert index from-1
to0
- disable
--download-python
, usepython -m zipapps.download_python
instead- add
-a/--auto
- auto download the latest version matched the current platform: x86_64+install_only
python -m zipapps.download_python -a
- add
-k/--keywords
, filt with keywords split by,
python -m zipapps.download_python -a -k 3.11
- add
-u/--unzip
, unzip the.tar.gz
python -m zipapps.download_python -a -k 3.11 -u
- download and unzip the
.tar.gz
- download and unzip the
- add
- [Compatible WARNING]: update
-
2024.06.04
- add arg
--download-python
: interactive download standalone python interpreter (https://www.github.com/indygreg/python-build-standalone) - custom
--rm-patterns
to remove useless files . fixed #28 #29 - add
pip_install_target
to install requirements and insert tosys.path
, cache supportfrom zipapps import pip_install_target
pip_install_target(Path("./mock_dir"), ["six"], force=False, sys_path=0); import six
- add arg
-
2023.09.12
- add
--download-pip-pyz
to download pip.pyz- install pip module to win32 embeded exe
- win32 embeded
./python.exe xxx/xxx/zipapps.pyz
auto downloadpip.pyz
and append to _pth
- win32 embeded
- install pip module to win32 embeded exe
- fix
main.py
docs
- add
-
2023.06.04
- save zipapps_config.json to pyz file
-
2022.08.28
- add
-q
for quiet mode-qqqqq
to mute all the logs
-m
support source code mode while not matchedmodule.submodule:function
format- like
python -c "python code"
- demo:
python -m zipapps -m "import six; print(six.__file__)"
- WARN: only when
-m
not matched regexr'^\w+(\.\w+)?(:\w+)?$'
- like
- add
-
2022.04.27
- handle PermissionError for chmod
- support
--dump-config
and--load-config
#24 fixed - support
--freeze-reqs
close #22- Freeze package versions of pip args with venv, output to the given file path.
-
equals tostdout
- logs will be redirect to
stderr
- Based on
pip
+venv
- the work folder is
tempfile.TemporaryDirectory
, prefix='zipapps_'
- the work folder is
- Freeze package versions of pip args with venv, output to the given file path.
- support clear self pyz after running fix #21
- refactor environment variables template and interval variables(with string.Template) #23
- change TEMP/HOME/SELF prefixes with $TEMP/$HOME/$SELF
- backward compatibility is preserved
- support $PID, $CWD
- change TEMP/HOME/SELF prefixes with $TEMP/$HOME/$SELF
- normalize the map of environment variables
- use these envs to reset build args at runtime
-
'unzip': 'ZIPAPPS_UNZIP', 'unzip_exclude': 'ZIPAPPS_UNZIP_EXCLUDE', 'unzip_path': 'ZIPAPPS_CACHE', 'ignore_system_python_path': 'STRICT_PYTHON_PATH', 'python_version_slice': 'PYTHON_VERSION_SLICE', 'clear_zipapps_cache': 'CLEAR_ZIPAPPS_CACHE', 'clear_zipapps_self': 'CLEAR_ZIPAPPS_SELF', 'unzip_chmod': 'UNZIP_CHMOD',
-
2022.03.17
- fix
--chmod
forget the parent folder and.pyz
self
- fix
-
2022.03.13
- check is_zipfile before activate
--ensure-zipapps
as the alias of--activate-zipapps
- fix the conflict between
-d
mode and-u
- add
--chmod
for unzipped files, fix #17
-
2022.03.10
- fix bug of
sys.path
missing the parent of__file__
while runningpython venv.pyz xx.py
- fix bug of
-
2022.03.07
- fix bug of version
2022.03.06
- file xxx.template not found
- fix bug of version
-
2022.03.06
- rename some template files
- remove duplicated sys.path
- only activate zipped file, ingore the folders path
-
2022.03.02
- fix #16 pip import at old version
- add environment variable
CLEAR_ZIPAPPS_CACHE
for argclear_zipapps_cache
zipapps.create_app
now has the exact parameters
-
2022.02.27
- add
--unzip-exclude, -ue
- The opposite of
--unzip
/-u
which will not be unzipped, should be used with--unzip
/-u
. - Can be overwrite with environment variable
ZIPAPPS_UNZIP_EXCLUDE
- The opposite of
- add
-
2022.01.17
- add runtime arg
--activate-zipapps
to ensure cache folder and do nothing - fix pip install for
-d
(lazy install mode) withpip.main
function instead of subprocess - tell how to use
zipapps
withnuitka
- add runtime arg
-
2021.11.01
- add
--clear-zipapps-cache
/-czc
command line arg- Clear the zipapps cache folder after running, but maybe failed for .pyd/.so files.
- move the
const
to the top ofensure_zipapps
template.
- add
-
2021.09.22
- fix
--layer-mode-prefix
not work for-a
files
- fix
-
2021.09.21
layer-mode
for serverless layers- https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
- this mode will not activate the sys.path of this zip file.
python3 -m zipapps --layer-mode --layer-mode-prefix=python -o layer.zip -r requirements.txt
- maybe add
-cc
to generate the.pyc
files
- maybe add
-
2021.05.17
lazy-install
mode will re-install packages while pip args including-U
or--upgrade
.
-
2021.04.29
- add arg
--ensure-pip
for embed-python(windows) or other python versions which have nopip
installed butlazy-install
mode is enabled.
- add arg
-
2021.04.24
- remove conflict command args with
pip
- remove
--compile
arg, it will only work forpip
-c
will not be removed,pip install -c
could usepip install --constraint
instead
- remove
- Refactor for OOP(Object-oriented programming)
- Will be used as the first stable version and end experimental phase
- remove
Config
class - show version info and other logs in stderr
compiled
should not be True whileunzip
is null- a successful message has been added to the tail of logs:
Successfully built
- remove conflict command args with
-
2021.04.23
- lazy install mode:
- fix bug: python version conflict
- remove repeated installation
pip install
will execute only once for samepip_args_md5
pip_args_md5
comes from pip_args string, including bytes of related files(likerequirements.txt
)
- logs of
pip install
will be redirected, fromstdout
tostderr
- lazy install mode:
-
2021.04.22
- update the lazy_install mode (
-d
)- simple use case:
-
python -m zipapps -d six
-
python app.pyz -c "import six;print(six.__file__)"
-
- it will not
rmtree
the_zipapps_lazy_pip
folder for new build- if you need to upgrade those requirements, use
-U
arg of pip - lazy_install mode will install requirements with
pip install
while first running- so you can just run like this to init its installation(
-m
not set):python3 app.pyz -V
- so you can just run like this to init its installation(
- if you need to upgrade those requirements, use
- for now,
-d
is to server for the cross-platform and cross-python-version app- pip target path is separated from different python version and system platform
- python version accurity can be reset with
-pva 5
, defaults to 2, means 3.8.3 and 3.8.4 are same3.8
- python version accurity can be reset with
- pip target path is separated from different python version and system platform
- simple use case:
- update the lazy_install mode (
-
2021.04.11
- add
--sys-paths
to include new paths of sys.path- support TEMP/HOME/SELF prefix, separated by commas
- sometimes be used for separating pyz code from requirements
- requirements often be installed by
pip install xxx -t $SOME_PATH
- requirements often be installed by
- add
-
2021.04.01
- use
ensurepip
instead of installpip
while running withlazy-install
unzip_path
has been set toSELF/zipapps_cache
by default whenlazy_install
isTrue
- use
-
2021.03.31
- use
sys.stderr.write
instead ofwarnings.warn
- support
-d
for lazy pip install- example:
python3 -m zipapps -d bottle -r requirements.txt
- the
bottle
and other packages ofrequirements.txt
will be install while first running - this is useful for cross-platform distributions, which means
pyz
file size is much smaller
- example:
- use
-
2021.03.02
- fix auto-unzip nonsense folders while
-u AUTO
but no need to unzip any files
- fix auto-unzip nonsense folders while
-
2021.01.29
- fix packaging zipapps self
python3 -m zipapps -m zipapps.__main__:main -a zipapps -o zipapps.pyz
- add
zipapps.pyz
torelease
page
- fix packaging zipapps self
-
2021.01.28
- fix bug: run
.py
file with run_path missing sys.argvpython3 app.pyz xxx.py -a -b -c
- fix bug: run
-
2021.01.11
- add
--zipapps
arg while building pyz files- to activate some venv pyz with given paths while running it
- also support
TEMP/HOME/SELF
prefix, these internal variables are still runtime args.
- add
-
2020.12.27
- Combile multiple
pyz
files, do like this:- python3 -m zipapps -o six.pyz six
- python3 -m zipapps -o psutil.pyz -u AUTO psutil
- python3 six.pyz --zipapps=psutil.pyz -c "import six,psutil;print(six.file, psutil.file)"
- Combile multiple
-
2020.12.23
--unzip
support auto-check by-u AUTO
, alias for--unzip=AUTO_UNZIP
- fix
run_module
bug while running./app.pyz -m module
-
2020.12.21
- now will not run a new subprocess in most cases.
- using
runpy.run_path
andrunpy.run_module
- and using
subprocess.run
instead ofsubprocess.call
- using
- now will not run a new subprocess in most cases.
-
2020.12.13
--unzip
support complete path--unzip
support auto-check by--unzip=AUTO_UNZIP
-
2020.11.23
- add
activate_zipapps
to activate zipappsPYTHONPATH
easily
- add
-
2020.11.21
- reset unzip_path as the parent folder to unzip files
- so the cache path will be like
./zipapps_cache/app/
forapp.pyz
, - this is different from old versions.
- so the cache path will be like
- add environment variable
ZIPAPPS_CACHE
for argunzip_path
- add environment variable
ZIPAPPS_UNZIP
for argunzip
- reset unzip_path as the parent folder to unzip files