Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Python installer from the https://www.python.org/ #38

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

ader1990
Copy link
Member

To avoid always writing the Python installation files to this folder, we can just download the installer, check the SHA1 checksum and install Python.

This way, on the next Python version iteration, we can just change the SHA1 checksum dictionary and the build can be done.

To avoid always writing the Python installation files to this folder, we
can just download the installer, check the SHA1 checksum and install
Python.

This way, on the next Python version iteration, we can just change the
SHA1 checksum dictionary and the build can be done.

Signed-off-by: Adrian Vladu <[email protected]>
@ader1990 ader1990 force-pushed the python_3_12_3_no_bundled_python branch from 69770ce to 7e9acb4 Compare May 31, 2024 10:27
@@ -1,6 +1,7 @@
Param(
[string]$platform = "x64",
[string]$pythonversion = "3.11_9",
[string]$pythonversion = "3.12.3",
[string]$pythonversionPrelease = "",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume Prelease stands for pre-release (e.g. b1, a6, etc), we could add a comment.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will fix the name, it s a typo


try {
Write-Host "Trying to uninstall Python ${pythonVersionInstaller} to ${python_template_dir}"
$installProcess = Start-Process -PassThru -Wait $pythonInstallerPath `
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm a bit concerned about removing existing Python installations, it might mess someone's dev environment.

Instead of uninstalling/installing Python, can we use the "embeddable" zip archives?

e.g. https://www.python.org/ftp/python/3.12.3/python-3.12.3-embed-amd64.zip

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking about the embed version too, but it is not that straightforward. The embeded Python is a subset of Python with less features, and we will need to navigate the dependency graph to install the required parts (pip, setuptools and maybe others). You will end up making the required parts of an installer, but with extra steps and without any SHA1 verifiable start point.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have also made a branch with the Embedded version. There are a few things to be aware of the embedded version though as it is not suitable to build CPYTHON extensions:

  • Include folder does not exist
  • Python.lib files do not exist
  • pyconfig.h does not exist

The include folder can be downloaded from the github cpython repository.
Python.lib files can be built from cpython source code or gotten from the MSI installer installation directory, same with pyconfig.h.

If the wheels are already available from pypi, the Embedded version will work without these requirements.

Copy link
Member

@petrutlucian94 petrutlucian94 Jun 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So by getting rid of netifaces, we should be able to easily use the embeddable version. We'd have to do that anyway, since it's no longer maintained.

We can't use wmi because the provider is not available at that stage. What we could do would be to implemented an utils module that calls the following using ctypes: https://github.com/al45tair/netifaces/blob/53fcdb6e5dccc84f6734939cfee1a95d3f470d7b/netifaces.c#L1304

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants