python / cpython

The Python programming language
https://www.python.org
Other
62.94k stars 30.14k forks source link

vs version for win32 compilation of extension modules is undocumented. #54384

Open 287d7d53-2849-4e84-8368-48c7a1cccce6 opened 13 years ago

287d7d53-2849-4e84-8368-48c7a1cccce6 commented 13 years ago
BPO 10175
Nosy @jkloth, @bitdancer, @briancurtin

Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

Show more details

GitHub fields: ```python assignee = None closed_at = None created_at = labels = ['type-feature', 'docs'] title = 'vs version for win32 compilation of extension modules is undocumented.' updated_at = user = 'https://bugs.python.org/tfogal' ``` bugs.python.org fields: ```python activity = actor = 'BreamoreBoy' assignee = 'docs@python' closed = False closed_date = None closer = None components = ['Documentation'] creation = creator = 'tfogal' dependencies = [] files = [] hgrepos = [] issue_num = 10175 keywords = [] message_count = 4.0 messages = ['119410', '119412', '119413', '222773'] nosy_count = 5.0 nosy_names = ['jkloth', 'tfogal', 'r.david.murray', 'brian.curtin', 'docs@python'] pr_nums = [] priority = 'normal' resolution = None stage = None status = 'open' superseder = None type = 'enhancement' url = 'https://bugs.python.org/issue10175' versions = ['Python 2.7', 'Python 3.4', 'Python 3.5'] ```

287d7d53-2849-4e84-8368-48c7a1cccce6 commented 13 years ago

I have recently attempted to install a couple third party packages (zope.interface and dulwech, FWIW) and encountered great difficulties. In particular, the setup complained that it could not find "vcvarsall.bat". Even running these setup scripts from a VC++ 2010 Express command shell gave the error.

Through browsing this bug database, specifically bugs 5235, 7511, and 2513, I have determined that the 'official' python.org binary is built with either VS 2008 or VS 2008 Express, I'm not sure which yet, but it does not really matter.

Setting DISTUTILS_USE_SDK and MSSdk to 1 and manually running the script, as suggested in one of the bug reports, does get by the issue of finding "vcvarsall.bat". As one might guess, this only results in a confusing error message during compilation (c1010070, "Failed to load and parse the manifest"), presumably because vs2008 binaries are not compatible with vs2010 output files.

This bug isn't so much about the incompatibility as to the difficulty in diagnosing the issue. It seems that trying to figure out which VS was used to compile a particular version of python is stored within a puzzle of bug reports. Could this be listed on the download page, e.g.:

http://www.python.org/download/releases/2.6.6/

? Of course, it would be ideal if multiple binaries existed, so that someone in my position could say, "Oh, I don't even have 2008 installed; I should go with the 2010-compiled version", or vice-versa. In the absence of that, simply knowing which version I'll need for extension modules is nice.

bitdancer commented 13 years ago

If I understand correctly (I'm not a windows user or developer myself), knowing the bits necessary to compile extension modules is not something very many people need to know. If an extension module supports Windows, there will generally be an installer package containing the binaries available. If there isn't, chances are the extension module doesn't support Windows.

That said, improvements in the documentation is rarely a bad idea ;)

jkloth commented 13 years ago

A quick look with Dependency Walker gives me the following:

Python 2.4,2.5 -- MSVC .NET 2003 (7.1) Python 2.6,2.7,3.0,3.1 -- MSVC 2008 (9.0)

Note these are only for the official python.org builds. Each version can also be built using other MSVC versions. To the best of my knowledge Python 3.2 will also be built using MSVC 2008 as 2010 support hasn't been discussed yet.

83d2e70e-e599-4a04-b820-3814bbdb9bef commented 10 years ago

There's a table here https://docs.python.org/X/using/windows.html#compiling-python-on-windows which shows what versions you need, where X can be 2 or 3.