classification
Title: build_ext in a venv on Windows assumes pyconfig.h in sys.exec_prefix + '\PC'
Type: behavior Stage: resolved
Components: Versions: Python 3.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: Nosy List: python-dev, sbt, vinay.sajip
Priority: normal Keywords: patch

Created on 2012-07-16 11:46 by sbt, last changed 2012-07-16 17:30 by python-dev. This issue is now closed.

Files
File name Uploaded Description Edit
build_ext.patch sbt, 2012-07-16 12:22
build_ext.patch sbt, 2012-07-16 15:19 review
Messages (4)
msg165590 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2012-07-16 11:46
On Windows I can't use a source build of Python to create a venv which will compile C extensions because pyconfig.h cannot be found.  For example

    running build
    running build_ext
    building 'demo' extension
    creating build
    creating build\temp.win32-3.3
    creating build\temp.win32-3.3\Release
    c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Repos\cpython\include -IC:\Users\oudkerk\myenv\PC /Tcdemo.c /Fobuild\temp.win32-3.3\Release\demo.obj
demo.c
    C:\Repos\cpython\include\Python.h(8) : fatal error C1083: Cannot open include file: 'pyconfig.h': No such file or directory
    error: command '"c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cl.exe"' failed with exit status 2

The problem seems to be with the following line in distutils/command/build_ext.py:

            self.include_dirs.append(os.path.join(sys.exec_prefix, 'PC'))

Inside a venv, sys.exec_prefix is the venv directory.
msg165593 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2012-07-16 12:22
The attached patch works for me.
msg165625 - (view) Author: Richard Oudkerk (sbt) * (Python committer) Date: 2012-07-16 15:19
Updated patch which does not fail test_distutils.
msg165643 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2012-07-16 17:30
New changeset a970054a93fb by Vinay Sajip in branch 'default':
Closes #15367: Corrected computation of include locations for source builds on Windows. Thanks to Richard Oudkerk for the bug report and patch.
http://hg.python.org/cpython/rev/a970054a93fb
History
Date User Action Args
2012-07-16 17:30:21python-devsetstatus: open -> closed

nosy: + python-dev
messages: + msg165643

resolution: fixed
stage: needs patch -> resolved
2012-07-16 15:19:47sbtsetfiles: + build_ext.patch

messages: + msg165625
2012-07-16 12:22:53sbtsetfiles: + build_ext.patch
keywords: + patch
messages: + msg165593
2012-07-16 11:46:40sbtcreate