Add tests that feed realistic ldd and otool listings through save and check only the libraries resolving outside the prefix end up in the metadata, since that filtering is the fiddliest part of the command. Narrow the version guard to reject `.' and `..' rather than any name containing a dot-dot, now that a slash is already refused, and note why the find still matches *.so.* even though CPython does not produce them. |
||
|---|---|---|
| .. | ||
| bin | ||
| libexec | ||
| test | ||
| README.md | ||
pyenv-binary (experimental)
Package an installed Python version into a relocatable archive that can be installed on another machine.
This is experimental and intentionally decoupled: it does not change
pyenv install or any other command. You drive it explicitly through
pyenv binary. Run pyenv binary <command> --help for details on a command.
Portability
An archive is portable across machines that share its build platform (OS, architecture and a compatible libc) and have the recorded system libraries. It is not portable across, say, glibc and musl, or to an older glibc; the platform and dependency metadata exist to catch that.
Commands
pyenv binary save <version> [<output-dir>]
Packs an installed version into <version>-<platform>.tar.gz (relative paths)
and writes <version>-<platform>.meta describing the build platform (OS, arch,
distro and libc version) and the system libraries the build links against.
pyenv binary save 3.12.7 ./dist