├── 3.10 ├── MANIFEST.in ├── setup.py └── src │ └── give_me_python │ ├── __init__.py │ └── run.py ├── 3.8 ├── MANIFEST.in ├── setup.py └── src │ └── give_me_python │ ├── __init__.py │ └── run.py ├── 3.9 ├── MANIFEST.in ├── setup.py └── src │ └── give_me_python │ ├── __init__.py │ └── run.py └── README.md /3.10/MANIFEST.in: -------------------------------------------------------------------------------- 1 | graft src/give_me_python/data 2 | -------------------------------------------------------------------------------- /3.10/setup.py: -------------------------------------------------------------------------------- 1 | import shutil 2 | 3 | from setuptools import setup, find_packages 4 | 5 | # copy the interpreter from the manylinux image into the package data dir 6 | src = "/opt/python/cp310-cp310/" 7 | dst = "./src/give_me_python/data" 8 | shutil.copytree(src, dst) 9 | 10 | setup( 11 | name="give-me-python", 12 | version="3.10.4", 13 | description="CPython installable via pip", 14 | url="https://github.com/jjhelmus/give-me-python", 15 | author="Jonathan Helmus", 16 | packages = find_packages("src"), 17 | package_dir = {"": "src"}, 18 | include_package_data = True, 19 | entry_points={ 20 | "console_scripts": [ 21 | "gm-python3.10=give_me_python:python3", 22 | ] 23 | } 24 | ) 25 | -------------------------------------------------------------------------------- /3.10/src/give_me_python/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | import sys 4 | 5 | 6 | def _run(name): 7 | executable = os.path.join(os.path.dirname(__file__), "data", "bin", name) 8 | return subprocess.call([executable] + sys.argv[1:]) 9 | 10 | 11 | def python3(): 12 | raise SystemExit(_run("python3")) 13 | 14 | 15 | if __name__ == "__main__": 16 | python3() 17 | -------------------------------------------------------------------------------- /3.10/src/give_me_python/run.py: -------------------------------------------------------------------------------- 1 | from give_me_python import python3 2 | 3 | 4 | if __name__ == "__main__": 5 | python3() 6 | -------------------------------------------------------------------------------- /3.8/MANIFEST.in: -------------------------------------------------------------------------------- 1 | graft src/give_me_python/data 2 | -------------------------------------------------------------------------------- /3.8/setup.py: -------------------------------------------------------------------------------- 1 | import shutil 2 | 3 | from setuptools import setup, find_packages 4 | 5 | # copy the interpreter from the manylinux image into the package data dir 6 | src = "/opt/python/cp38-cp38/" 7 | dst = "./src/give_me_python/data" 8 | shutil.copytree(src, dst) 9 | 10 | setup( 11 | name="give-me-python", 12 | version="3.8.13", 13 | description="CPython installable via pip", 14 | url="https://github.com/jjhelmus/give-me-python", 15 | author="Jonathan Helmus", 16 | packages = find_packages("src"), 17 | package_dir = {"": "src"}, 18 | include_package_data = True, 19 | entry_points={ 20 | "console_scripts": [ 21 | "gm-python3.8=give_me_python:python3", 22 | ] 23 | } 24 | ) 25 | -------------------------------------------------------------------------------- /3.8/src/give_me_python/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | import sys 4 | 5 | 6 | def _run(name): 7 | executable = os.path.join(os.path.dirname(__file__), "data", "bin", name) 8 | return subprocess.call([executable] + sys.argv[1:]) 9 | 10 | 11 | def python3(): 12 | raise SystemExit(_run("python3")) 13 | 14 | 15 | if __name__ == "__main__": 16 | python3() 17 | -------------------------------------------------------------------------------- /3.8/src/give_me_python/run.py: -------------------------------------------------------------------------------- 1 | from give_me_python import python3 2 | 3 | 4 | if __name__ == "__main__": 5 | python3() 6 | -------------------------------------------------------------------------------- /3.9/MANIFEST.in: -------------------------------------------------------------------------------- 1 | graft src/give_me_python/data 2 | -------------------------------------------------------------------------------- /3.9/setup.py: -------------------------------------------------------------------------------- 1 | import shutil 2 | 3 | from setuptools import setup, find_packages 4 | 5 | # copy the interpreter from the manylinux image into the package data dir 6 | src = "/opt/python/cp39-cp39/" 7 | dst = "./src/give_me_python/data" 8 | shutil.copytree(src, dst) 9 | 10 | setup( 11 | name="give-me-python", 12 | version="3.9.12", 13 | description="CPython installable via pip", 14 | url="https://github.com/jjhelmus/give-me-python", 15 | author="Jonathan Helmus", 16 | packages = find_packages("src"), 17 | package_dir = {"": "src"}, 18 | include_package_data = True, 19 | entry_points={ 20 | "console_scripts": [ 21 | "gm-python3.9=give_me_python:python3", 22 | ] 23 | } 24 | ) 25 | -------------------------------------------------------------------------------- /3.9/src/give_me_python/__init__.py: -------------------------------------------------------------------------------- 1 | import os 2 | import subprocess 3 | import sys 4 | 5 | 6 | def _run(name): 7 | executable = os.path.join(os.path.dirname(__file__), "data", "bin", name) 8 | return subprocess.call([executable] + sys.argv[1:]) 9 | 10 | 11 | def python3(): 12 | raise SystemExit(_run("python3")) 13 | 14 | 15 | if __name__ == "__main__": 16 | python3() 17 | -------------------------------------------------------------------------------- /3.9/src/give_me_python/run.py: -------------------------------------------------------------------------------- 1 | from give_me_python import python3 2 | 3 | 4 | if __name__ == "__main__": 5 | python3() 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | give-me-python 2 | ============== 3 | 4 | CPython that can be installed via pip. 5 | 6 | This packages the CPython interpreters from the manylinux2014 image into Python wheels. 7 | These wheels can be installed using pip. A gm-python3.X console script will be installed which can 8 | be used to run the installed interpreter. 9 | 10 | 11 | To build wheels 12 | --------------- 13 | 14 | Start a manylinux2014 docker container: 15 | ``` 16 | docker run -it --rm -v `pwd`:/io quay.io/pypa/manylinux2014_x86_64 17 | ``` 18 | 19 | Inside the container run the following commands each subdirectory: 20 | ``` 21 | /opt/python/cp310-cp310/bin/python setup.py bdist_wheel 22 | auditwheel repair dist/ 23 | ``` 24 | --------------------------------------------------------------------------------