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.

Title: MSVCCompiler.get_msvc_path() doesn't work on Win x64
Type: Stage:
Components: Distutils Versions: Python 2.7
Status: closed Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: dstufft, eric.araujo, lemburg
Priority: normal Keywords:

Created on 2015-04-30 15:15 by lemburg, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (2)
msg242274 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2015-04-30 15:15
Trying to use .get_msvc_path() on an distutils.msvccompiler.MSVCCompiler() instance raises an AttributeError:

MSVCCompiler instance has no attribute '_MSVCCompiler__root'

The reason seems to be that self.__root is not set for Win x64 in .__init__().

Here's an example from Python 2.7.9:

>>> from distutils.msvccompiler import *
>>> c = OldMSVCCompiler()
>>> vars(c)
{'force': 0, 'verbose': 0, 'dry_run': 0, 'runtime_library_dirs': [], 'libraries': [], 'macros': [], 'objects': [], 'output_dir': None, '_MSVCCompiler__product': 'Microsoft SDK compiler 15.0', 'initialized': False, '_MSVCCompiler__arch': 'AMD64', '_MSVCCompiler__version': 9.0, 'library_dirs': [], 'include_dirs': []}
>>> c.get_msvc_paths('include')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python27\lib\distutils\", line 615, in get_msvc_paths
    % (self.__root, self.__version))
AttributeError: MSVCCompiler instance has no attribute '_MSVCCompiler__root'

The newer implementation of MSVCCompiler in msvc9compiler doesn't have this method, so cannot be used to find the include and library paths.
msg242275 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2015-04-30 15:40
I checked the registry to find the correct root. This would be Software\Microsoft\VisualStudio\.

However, VC 9.0 no longer seems to set the variables the method is looking for, so even if the .__root attribute problem gets fixed, the method would not find anything useful.
Date User Action Args
2022-04-11 14:58:16adminsetgithub: 68271
2015-04-30 15:40:57lemburgsetstatus: open -> closed

messages: + msg242275
2015-04-30 15:15:48lemburgcreate