• Stars
    star
    4,972
  • Rank 8,406 (Top 0.2 %)
  • Language
    Rust
  • License
    Mozilla Public Li...
  • Created almost 6 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A modern Python application packaging and distribution tool

PyOxidizer

Build Status

PyOxidizer is a utility for producing binaries that embed Python. The over-arching goal of PyOxidizer is to make complex packaging and distribution problems simple so application maintainers can focus on building applications instead of toiling with build systems and packaging tools.

PyOxidizer is capable of producing a single file executable - with a copy of Python and all its dependencies statically linked and all resources (like .pyc files) embedded in the executable. You can copy a single executable file to another machine and run a Python application contained within. It just works.

PyOxidizer exposes its lower level functionality for embedding self-contained Python interpreters as a tool and software library. So if you don't want to ship executables that only consist of a Python application, you can still use PyOxidizer to e.g. produce a library containing Python suitable for linking in any application or use PyOxidizer's embedding library directly for embedding Python in a larger application.

The Oxidizer part of the name comes from Rust: executables produced by PyOxidizer are compiled from Rust and Rust code is responsible for managing the embedded Python interpreter and all its operations. If you don't know Rust, that's OK: PyOxidizer tries to make the existence of Rust nearly invisible to end-users.

While solving packaging and distribution problems is the primary goal of PyOxidizer, a side-effect of solving that problem with Rust is that PyOxidizer can serve as a bridge between these two languages. PyOxidizer can be used to easily add a Python interpreter to any Rust project. But the opposite is also true: PyOxidizer can also be used to add Rust to Python. Using PyOxidizer, you could bootstrap a new Rust project which contains an embedded version of Python and your application. Initially, your project is a few lines of Rust that instantiates a Python interpreter and runs Python code. Over time, functionality could be (re)written in Rust and your previously Python-only project could leverage Rust and its diverse ecosystem. Since PyOxidizer abstracts the Python interpreter away, this could all be invisible to end-users: you could rewrite an application from Python to Rust and people may not even know because they never see a libpython, .py files, etc.

Project Info

🏠 The official home of the PyOxidizer project is https://github.com/indygreg/PyOxidizer.

πŸ“” Documentation (generated from the docs/ directory) is available at https://gregoryszorc.com/docs/pyoxidizer/main/.

πŸ’¬ The pyoxidizer-users mailing list is a forum for users to discuss all things PyOxidizer.

πŸ’° If you want to financially contribute to PyOxidizer, do so via GitHub Sponsors or on Patreon.

More Repositories

1

python-build-standalone

Produce redistributable builds of Python
Python
2,051
star
2

apple-platform-rs

Rust crates supporting Apple platform development
Rust
563
star
3

python-zstandard

Python bindings to the Zstandard (zstd) compression library
C
426
star
4

collectd-carbon

collectd plugin to write to Carbon (frontend for Graphite's Whisper storage format)
Python
146
star
5

lua-protobuf

Lua support for Google's protocol buffers
Python
84
star
6

collectd-diskstats

collectd plugin for detailed disk I/O stats via /proc/diskstats
Python
16
star
7

zippylog

Structured Message Bus, Store, and Event Processing System
C++
15
star
8

yubikey-ssh-agent

An opinionated SSH agent for YubiKeys
Rust
13
star
9

cryptography-rs

A collection of Rust crates in the cryptography space
Rust
10
star
10

linux-packaging-rs

Rust projects related to Linux packaging
Rust
8
star
11

clanalyze

C/C++ code analyzer framework built on top of Clang
Python
7
star
12

apple-opensource-downloader

Download Apple's open source code from opensource.apple.com
Rust
7
star
13

toolchain-tools

Projects related to packaging and language toolchain support
Rust
7
star
14

rs-memory-module-sys

Rust bindings to https://github.com/fancycode/MemoryModule
C
4
star
15

clitest-rs

Proposal for a command line testing tool implemented in Rust
Rust
4
star
16

pymake

Unofficial Git mirror of PyMake, a make replacement in Python
Python
4
star
17

hg

Unofficial Git conversion of Mercurial repository
Python
3
star
18

apple-code-sign-action

Sign and notarize Apple applications using open source software
JavaScript
3
star
19

tugger

Shipping around the world
Rust
3
star
20

indygreg.github.com

personal website content
HTML
3
star
21

github-webhooks-firehose

Consume GitHub webhooks requests
Python
2
star
22

mozilla-build-analyzer

Aggregation, storage, and analysis of Mozilla build metadata
Python
2
star
23

warnsquash

Tool to help squash compiler warnings
Python
1
star
24

dotfiles

configuration files for my home directory
Python
1
star
25

portable-clang

Portable clang toolchains for turnkey cross-compiling
Rust
1
star
26

docker-build-python

Build standalone and reusable Python installations from Docker
Shell
1
star
27

vc90-merge-modules

Microsoft Visual C++ 9.0 Merge Modules
1
star
28

htcontrol

APIs and tools to control my home theater
C#
1
star