https://github.com/pex-tool/pex Skip to content Navigation Menu Toggle navigation Sign in * Product + GitHub Copilot Write better code with AI + Security Find and fix vulnerabilities + Actions Automate any workflow + Codespaces Instant dev environments + Issues Plan and track work + Code Review Manage code changes + Discussions Collaborate outside of code + Code Search Find more, search less Explore + All features + Documentation + GitHub Skills + Blog * Solutions By company size + Enterprises + Small and medium teams + Startups By use case + DevSecOps + DevOps + CI/CD + View all use cases By industry + Healthcare + Financial services + Manufacturing + Government + View all industries View all solutions * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} pex-tool / pex Public * * Notifications You must be signed in to change notification settings * Fork 262 * Star 2.7k A tool for generating .pex (Python EXecutable) files, lock files and venvs. docs.pex-tool.org/ License Apache-2.0 license 2.7k stars 262 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 67 * Pull requests 8 * Discussions * Actions * Projects 1 * Wiki * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Wiki * Security * Insights pex-tool/pex main BranchesTags [ ] Go to file Code Folders and files Name Name Last commit Last commit message date Latest commit History 1,587 Commits .github .github assets assets build-backend build-backend docker docker docs docs package package pex pex scripts scripts testing testing tests tests .gitignore .gitignore .test_timings .test_timings CHANGES.md CHANGES.md CONTRIBUTING.md CONTRIBUTING.md LICENSE LICENSE README.rst README.rst RELEASE.rst RELEASE.rst docs-requirements.txt docs-requirements.txt dtox.sh dtox.sh mypy.ini mypy.ini pyproject.toml pyproject.toml pytest.ini pytest.ini tox.ini tox.ini View all files Repository files navigation * README * Apache-2.0 license PEX https://github.com/pex-tool/pex/workflows/CI/badge.svg?branch=main [6874747073] [6874747073] [6874747073] [6874747073] https:// img.shields.io/discord/1205942638763573358 Contents * Overview * Installation * Simple Examples + Save Dependencies From Pip + Ephemeral Environments + Using Entry Points + Specifying A Specific Interpreter * Integrating pex into your workflow * Documentation * Development Overview pex is a library for generating .pex (Python EXecutable) files which are executable Python environments in the spirit of virtualenvs. pex is an expansion upon the ideas outlined in PEP 441 and makes the deployment of Python applications as simple as cp. pex files may even include multiple platform-specific Python distributions, meaning that a single pex file can be portable across Linux and OS X. pex files can be built using the pex tool. Build systems such as Pants, Buck, and {py}gradle also support building .pex files directly. Still unsure about what pex does or how it works? Watch this quick lightning talk: WTF is PEX?. pex is licensed under the Apache2 license. Installation To install pex, simply $ pip install pex You can also build pex in a git clone using tox: $ tox -e package $ cp dist/pex ~/bin This builds a pex binary in dist/pex that can be copied onto your $PATH. The advantage to this approach is that it keeps your Python environment as empty as possible and is more in-line with what pex does philosophically. Simple Examples Launch an interpreter with requests, flask and psutil in the environment: $ pex requests flask 'psutil>2,<3' Save Dependencies From Pip Or instead freeze your current virtualenv via requirements.txt and execute it anywhere: $ pex $(pip freeze) -o my_virtualenv.pex $ deactivate $ ./my_virtualenv.pex Ephemeral Environments Run webserver.py in an environment containing flask as a quick way to experiment: $ pex flask -- webserver.py Launch Sphinx in an ephemeral pex environment using the Sphinx entry point sphinx:main: $ pex sphinx -e sphinx:main -- --help Using Entry Points Projects specifying a console_scripts entry point in their configuration can build standalone executables for those entry points. To build a standalone pex-tools-executable.pex binary that runs the pex-tools console script found in all pex version 2.1.35 and newer distributions: $ pex "pex>=2.1.35" --console-script pex-tools --output-file pex-tools-executable.pex Specifying A Specific Interpreter You can also build pex files that use a specific interpreter type: $ pex "pex>=2.1.35" -c pex-tools --python=pypy -o pex-tools-pypy-executable.pex Most pex options compose well with one another, so the above commands can be mixed and matched, and equivalent short options are available. For a full list of options, just type pex --help. Integrating pex into your workflow If you use tox (and you should!), a simple way to integrate pex into your workflow is to add a packaging test environment to your tox.ini: [testenv:package] deps = pex commands = pex . -o dist/app.pex Then tox -e package will produce a relocatable copy of your application that you can copy to staging or production environments. Documentation More documentation about Pex, building .pex files, and how .pex files work is available at https://docs.pex-tool.org. Development Pex uses tox for test and development automation. To run the test suite, just invoke tox: $ tox If you don't have tox, you can generate a pex of tox: $ pex tox -c tox -o ~/bin/tox Tox provides many useful commands and options, explained at https:// tox.wiki/en/latest/ . Below, we provide some of the most commonly used commands used when working on Pex, but the docs are worth acquainting yourself with to better understand how Tox works and how to do more advanced commands. To run a specific environment, identify the name of the environment you'd like to invoke by running tox --listenvs-all, then invoke like this: $ tox -e fmt To run MyPy: $ tox -e check All of our tox test environments allow passthrough arguments, which can be helpful to run specific tests: $ tox -e py37-integration -- -k test_reproducible_build To run Pex from source, rather than through what is on your PATH, invoke via Python: $ python -m pex About A tool for generating .pex (Python EXecutable) files, lock files and venvs. docs.pex-tool.org/ Resources Readme License Apache-2.0 license Activity Custom properties Stars 2.7k stars Watchers 55 watching Forks 262 forks Report repository Releases 289 pex 2.24.1 Latest Nov 5, 2024 + 288 releases Sponsor this project Sponsor Learn more about GitHub Sponsors Used by 635 * @jingxieRichard * @dagster-io * @npelikan * @ur64n * @pseudo626 * @gierd-inc * @offsoc + 627 Contributors 105 * @jsirois * @wickman * @kwlzn * @benjyw * @Eric-Arellano * @CMLivingston * @mikekap * @msabramo * @lorencarvalho * @huonw * @digwanderlust * @dturner-tw * @Moult * @butlern + 91 contributors Languages * Python 99.7% * Other 0.3% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.