-
-
Save dbl0null/af558f6f6403e8fc36cabbc858761065 to your computer and use it in GitHub Desktop.
Using pex to build a single python executable (minimal requirements)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python2.7 | |
from pex.pex_builder import PEXBuilder | |
from pex.resolvable import resolvables_from_iterable | |
from pex.resolver import CachingResolver | |
from pex.resolver_options import ResolverOptionsBuilder | |
import argparse | |
import os | |
import shutil | |
import sys | |
import tempfile | |
def main(): | |
args = parse() | |
tmpdir = tempfile.mkdtemp() | |
try: | |
pex = PEXBuilder(path=tmpdir) | |
if args.requirement: | |
resolver = CachingResolver('.pex-cache', None) | |
resolveds = resolver.resolve(resolvables_from_iterable( | |
args.requirement, | |
ResolverOptionsBuilder() | |
)) | |
for dist in resolveds: | |
pex.add_distribution(dist) | |
pex.add_requirement(dist.as_requirement()) | |
for input in args.input: | |
pex.add_source( | |
input, | |
os.path.join(pex.BOOTSTRAP_DIR, input) | |
) | |
pex.set_entry_point(args.entrypoint) | |
if args.shebang: | |
pex.set_shebang(args.shebang) | |
pex.build(args.output) | |
finally: | |
shutil.rmtree(tmpdir, True) | |
return 0 | |
def parse(): | |
parser = argparse.ArgumentParser() | |
parser.add_argument('output', | |
help='the destination of the output pex' | |
) | |
parser.add_argument('entrypoint', | |
help='module[:symbol] to use as entrypoint', | |
) | |
parser.add_argument('input', | |
help='a list of python files to package in', | |
metavar='input.py', | |
nargs='+', | |
) | |
parser.add_argument('--shebang', | |
help='set shebang for the output pex' | |
) | |
parser.add_argument('--requirement', | |
action='append', | |
help='add requirements to this pex' | |
) | |
return parser.parse_args() | |
if __name__ == '__main__': | |
sys.exit(main()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pex==1.1.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment