CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 18:30:14 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"b749fac81ff97ca5a6ab048d51216dd1"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=orpcwkiy47Fb1753aA4Ds%2FSX4UAaeIPZBIYMoS1ISPdclXQUjcQamvwrTwNHI8cKp%2FEhrf%2FhhFSs4%2BOCkJQaCoEihNBuTBuBmQv960sqvA%2B%2F2JdJVW5opq69icGFZuAVGtFDv6zvyC0%2BuFpV%2BsEqlwarRH%2BBO%2BtzpxYg0%2Fga22frczEOLbbIb%2BdOjeWxNBq5DNlltDGUcSjloehbV5htByOG9iIQQ4VvotiuNjsTdQ9Wf2bYdZCfXMBAbH3zJZnRes3ixzwiWuv4qsQSH50k6Q%3D%3D--F5tGYQvXpVIl4rA0--N4yQPEnxS7vD19wydqkiEQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.808325085.1753295414; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 18:30:14 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 18:30:14 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: BD44:394F4C:FDBA94:12C161C:68812A36
GitHub - gregneagle/relocatable-python: A tool for building standalone relocatable Python.framework bundles
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 46
A tool for building standalone relocatable Python.framework bundles
License
gregneagle/relocatable-python
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a tool to make a relocatable Python framework containing PyObjC. NOTE: while the resulting frameworks (and interpreters) have been successfully used in several projects (among them Imagr, Munki, and AutoPkg) there is no guarantee it is suitable as a general-purpose Python installation. A relocatable Python.framework is ideal for embedding into an application's Frameworks directory, and can even be used to get PyObjC-based apps and tools running in the macOS Recovery environment, which does not include Python. The Python version defaults to 2.7.15, and minimum (or target) macOS version is 10.9. No modules are automatically installed. Previously, the highest supported versions of pip and PyObjC are installed, as is xattr 0.6.4 (this is the version included with macOS High Sierra -- the current version has issues running in Recovery boot). To install these, use --pip-requirements=requirements_python2_recommended.txt to mimic old behavior. In previous versions of this tool on Python versions 3.x and higher, certain modules (xattr, cffi, six and pyobjc) were installed. These can be installed via --pip-requirements=requirements_python3_recommended.txt. Currently tested versions: Python version 2.7.15 with macOS deployment target 10.9+ Python version 3.7.4 with macOS deployment target 10.9+ Requires at least the command-line developer tools; might require a full Xcode install. Basic use -- make a Python.framework in the current working directory: ./make_relocatable_python_framework.py Specifying a target destination for the framework: ./make_relocatable_python_framework.py --destination ~/Desktop Specifying a different Python version: ./make_relocatable_python_framework.py --python-version 3.7.4 More options: ./make_relocatable_python_framework.py --help NOTES: - As of this commit: https://github.com/gregneagle/relocatable-python/commit/0184e8b43f1ecde050b07feb1761fac2f7ce0c5c, make_relocatable_python_framework.py now uses Apple's Python 3 that is included with Xcode and the Command line development tools. Python 2 was removed from macOS with the release of macOS 12.3. make_relocatable_python_framework.py requires other tools that are included with Xcode/Command Line development tools, so using Xcode's python3 is unlikely to break anyone except perhaps those using the tool on something prior to macOS Catalina + Xcode 11. - As of this commit: https://github.com/gregneagle/relocatable-python/commit/f4c4110f36ac1cb60b8253c2e04eaf34804f7303, any signed binaries or libraries within the framework will have their signatures removed. The "relocatablizing" process modifies these files, making any signature invalid. Rather than leave an invalid signature, which might seem like potential malware (and which currently causes at least one well-known security tool to _crash_), it's better to remove the invalid signature all together. - As of this commit: https://github.com/gregneagle/relocatable-python/commit/903c708a01d1a2444ea5648114f3acf6e7f94fd7, instead of removing the signature, we replace it with an ad-hoc signature. This is required for the code to actually run on Apple silicon. UNIVERSAL PYTHON As of Python 3.9.11 (Mar 16, 2022), Python.org offers a Universal Python build. If you want to test if your framework is also fully universal, you can use the included "python_universal_tester.sh" script. It takes your version of Python as an argument: ``` % ./python_universal_tester.sh 3.10 Using Python 3.10 All files are universal! % echo $? 0 ``` The script must be run from the same directory as the built Python.framework. If any files are not universal, it will list them and exit 1.
About
A tool for building standalone relocatable Python.framework bundles
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
You can’t perform that action at this time.