homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: bdist_wininst installer with install script raises exception
Type: Stage: resolved
Components: Distutils Versions:
process
Status: closed Resolution: wont fix
Dependencies: Superseder:
Assigned To: eric.araujo Nosy List: Matt.Wilkie, dbn, eric.araujo, mhammond, tarek, theller, vstinner
Priority: normal Keywords: patch

Created on 2008年12月11日 21:16 by theller, last changed 2022年04月11日 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
wininst-compat.patch dbn, 2013年09月10日 12:57 Run bdist_wininst install scripts in 2/3 compatibile environment review
wininst-compat-2.7.patch dbn, 2013年09月10日 12:58 (2.7) Run bdist_wininst install scripts in 2/3 compatibile environment
wininst-10.0-compat.exe dbn, 2013年09月10日 12:59 default/3.3 rebuilt wininst stub
wininst-9.0-compat-2.7.exe dbn, 2013年09月10日 12:59 2.7 rebuilt wininst stub
Messages (8)
msg77631 - (view) Author: Thomas Heller (theller) * (Python committer) Date: 2008年12月11日 21:16
Running a bdist_wininst installer that contains a install script, with
python 3, raises an exception. This is displayed in the gui:
ImportError: No module named __builtin__
*** run_installscript: internal error 0xFFFFFFFF ***
This is probably because the bdist_wininst installer stubs (in the
Lib/distutils/command subdirectory) have not been recompiled after
changing the sources.
msg112431 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010年08月02日 08:56
Can you still reproduce in 3.1 and 3.2?
msg153681 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2012年02月19日 09:14
The crash message is the same as the one in #4918; it looks like bdist_wininst need better error reporting.
msg190439 - (view) Author: Matt Wilkie (Matt.Wilkie) Date: 2013年06月01日 06:13
I confirm this is happening with 3.2.4 from an installer generated in 2.7.4 (64bit Win7, 32bit python): https://pypi.python.org/pypi/leo/4.11.devel-build-5802 
msg197436 - (view) Author: Dan Nicholson (dbn) Date: 2013年09月10日 12:57
It turns out this is pretty easy to fix by just changing the stub to import builtins or __builtin__ depending on the python install version. Attached are patches that fix this for both the default and 2.7 branches.
My test case is a pure python module with an install script. I've rebuilt the wininst stub for both default (3.3) with VS2010 Express and 2.7 with VS2008 Express. I then built installers and ran them in both directions: installer created with python-2.7 and installed into python-3.3, and an installer created with python-3.3 and installed into python-2.7. Both worked fine with no warnings.
I've attached the stubs I built in case they're helpful. wininst-10.0-compat.exe is the 32 bit stub for default/3.3. wininst-9.0-compat-2.7.exe is the 32 bit stub for 2.7.
msg197442 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2013年09月10日 14:37
I think the exe files are specific to one Python version, so the version check would not be necessary. I may be wrong though, as I’m not a windows dev or user, so I’m adding Mark to this issue.
msg197818 - (view) Author: Dan Nicholson (dbn) Date: 2013年09月15日 19:27
Right, that's what makes this difficult. If the stub exe of the target python was used, then it wouldn't need to care about compatibility. However, what you're running is the stub of the build python. So, when I distribute a bdist_wininst exe, it's running the stub from my python on the user's machine. That introduces a few compatibility issues.
1. The exe needs the same CRT version installed on the target that it was built with. It would fail to run immediately in this case. This does make having the built python be newer than the target python a little difficult.
2. The exe loads the python dll on the target machine. This requires the python dll to have enough compatibility for the usage of the python API in the exe of the build version.
3. After loading the python dll, python code is run in the target python. This is the problem I'm trying to solve here. The python code is embedded in the exe of the installer, so the compatibility with the target python has to be considered at build time.
The situation you're describing where the wininst of the target is run could maybe be made to work, but it would be a larger project.
msg384826 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2021年01月11日 12:52
The distutils bdist_wininst command has been removed in Python 3.10: see bpo-42802.
History
Date User Action Args
2022年04月11日 14:56:42adminsetgithub: 48886
2021年01月11日 12:52:11vstinnersetstatus: open -> closed

nosy: + vstinner
messages: + msg384826

resolution: wont fix
stage: test needed -> resolved
2013年09月15日 19:27:34dbnsetmessages: + msg197818
2013年09月10日 14:37:24eric.araujosetnosy: + mhammond
messages: + msg197442
2013年09月10日 12:59:37dbnsetfiles: + wininst-9.0-compat-2.7.exe
2013年09月10日 12:59:16dbnsetfiles: + wininst-10.0-compat.exe
2013年09月10日 12:58:31dbnsetfiles: + wininst-compat-2.7.patch
2013年09月10日 12:57:51dbnsetfiles: + wininst-compat.patch

nosy: + dbn
messages: + msg197436

keywords: + patch
2013年06月01日 06:13:51Matt.Wilkiesetnosy: + Matt.Wilkie
messages: + msg190439
2012年02月19日 09:14:17eric.araujosetassignee: tarek -> eric.araujo
stage: test needed
messages: + msg153681
versions: - Python 3.0
2010年08月02日 08:56:53eric.araujosetnosy: + eric.araujo
messages: + msg112431
2009年02月06日 01:29:17tareksetassignee: tarek
nosy: + tarek
2008年12月11日 21:16:07thellercreate

AltStyle によって変換されたページ (->オリジナル) /