Skip to content

pip source installation fails when using a venv + mingw #332

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

Open
eabase opened this issue Mar 17, 2025 · 4 comments
Open

pip source installation fails when using a venv + mingw #332

eabase opened this issue Mar 17, 2025 · 4 comments
Labels
faq A frequent issue, remaining opened to facilitate discoverability

Comments

@eabase
Copy link

eabase commented Mar 17, 2025

Followed the installation instructions for install from source, and (obviously) would like to use a venv (via venvlink or uv) to compartmentalize the installation.

The compile stage then fails, as it is trying to start a subprocess (wich of course doesn't know about my venv.)

Version & Platform

Version: Using a git clone
Platform: Windows-11 Pro
Language: Python 3.12.9 or C++17 ?
Compiler: MSVS 2022, MSVC 2019
platform backend: ❓
rendering backend Vulkan or DirectX

# pip install -v .

...

  [215/215] C:\WINDOWS\system32\cmd.exe /C "cd . && C:\lang\perl\c\bin\c++.exe -O3 -DNDEBUG   -shared -o _imgui_bundle.cp312-win_amd64.pyd -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/module.cpp.obj CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/pybind_imgui_bundle.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_backends.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_test_engine.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/hello_imgui/bindings/pybind_hello_imgui.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImCoolBar/bindings/pybind_imcoolbar.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImFileDialog/bindings/pybind_im_file_dialog.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-command-palette/bindings/pybind_imgui_command_palette.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-knobs/bindings/pybind_imgui_knobs.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-node-editor/bindings/pybind_imgui_node_editor.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_md/bindings/pybind_imgui_md.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_tex_inspect/bindings/pybind_imgui_tex_inspect.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_toggle/bindings/pybind_imgui_toggle.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImGuiColorTextEdit/bindings/pybind_imgui_color_text_edit.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImGuizmo/bindings/pybind_imguizmo.cpp.obj CMakeFiles/_imgui_bundle.dir/external/immapp/bindings/pybind_immapp_cpp.cpp.obj CMakeFiles/_imgui_bundle.dir/external/immvision/bindings/pybind_immvision.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imspinner/bindings/pybind_imspinner.cpp.obj CMakeFiles/_imgui_bundle.dir/external/portable_file_dialogs/bindings/pybind_portable_file_dialogs.cpp.obj CMakeFiles/_imgui_bundle.dir/external/nanovg/bindings/pybind_nanovg.cpp.obj -LC:/lang/Python312/libs libnanobind-static.a  -lopengl32  C:/lang/Python312/libs/python312.lib  external/libimgui_node_editor.a  external/libimgui_md.a  external/immapp/immapp/libimmapp.a  external/libimgui_node_editor.a  external/libimgui_md.a  external/immapp/immapp/libimmapp.a  external/libimgui_pywrappers.a  external/libimplot3d.a  external/libimguizmo.a  external/libimgui_tex_inspect.a  external/libnvg_imgui.a  external/nanovg/nanovg/libnanovg.a  external/libimgui_knobs.a  external/libimspinner.a  external/libimgui_toggle.a  external/libimgui_command_palette.a  external/libimcoolbar.a  external/ImGuiColorTextEdit/libimgui_color_text_edit.a  external/libimplot.a  external/libim_file_dialog.a  external/hello_imgui/hello_imgui/src/hello_imgui/libhello_imgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libstb_hello_imgui.a  external/glfw/glfw/src/libglfw3dll.a  external/hello_imgui/hello_imgui/src/hello_imgui/libglad.a  -lopengl32  external/libimgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  external/libimgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
  
  FAILED: _imgui_bundle.cp312-win_amd64.pyd
  
  C:\WINDOWS\system32\cmd.exe /C "cd . && C:\lang\perl\c\bin\c++.exe -O3 -DNDEBUG   -shared -o _imgui_bundle.cp312-win_amd64.pyd -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/module.cpp.obj CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/pybind_imgui_bundle.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_backends.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_test_engine.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/hello_imgui/bindings/pybind_hello_imgui.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImCoolBar/bindings/pybind_imcoolbar.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImFileDialog/bindings/pybind_im_file_dialog.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-command-palette/bindings/pybind_imgui_command_palette.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-knobs/bindings/pybind_imgui_knobs.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui-node-editor/bindings/pybind_imgui_node_editor.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_md/bindings/pybind_imgui_md.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_tex_inspect/bindings/pybind_imgui_tex_inspect.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imgui_toggle/bindings/pybind_imgui_toggle.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImGuiColorTextEdit/bindings/pybind_imgui_color_text_edit.cpp.obj CMakeFiles/_imgui_bundle.dir/external/ImGuizmo/bindings/pybind_imguizmo.cpp.obj CMakeFiles/_imgui_bundle.dir/external/immapp/bindings/pybind_immapp_cpp.cpp.obj CMakeFiles/_imgui_bundle.dir/external/immvision/bindings/pybind_immvision.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d.cpp.obj CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d_internal.cpp.obj CMakeFiles/_imgui_bundle.dir/external/imspinner/bindings/pybind_imspinner.cpp.obj CMakeFiles/_imgui_bundle.dir/external/portable_file_dialogs/bindings/pybind_portable_file_dialogs.cpp.obj CMakeFiles/_imgui_bundle.dir/external/nanovg/bindings/pybind_nanovg.cpp.obj -LC:/lang/Python312/libs libnanobind-static.a  -lopengl32  C:/lang/Python312/libs/python312.lib  external/libimgui_node_editor.a  external/libimgui_md.a  external/immapp/immapp/libimmapp.a  external/libimgui_node_editor.a  external/libimgui_md.a  external/immapp/immapp/libimmapp.a  external/libimgui_pywrappers.a  external/libimplot3d.a  external/libimguizmo.a  external/libimgui_tex_inspect.a  external/libnvg_imgui.a  external/nanovg/nanovg/libnanovg.a  external/libimgui_knobs.a  external/libimspinner.a  external/libimgui_toggle.a  external/libimgui_command_palette.a  external/libimcoolbar.a  external/ImGuiColorTextEdit/libimgui_color_text_edit.a  external/libimplot.a  external/libim_file_dialog.a  external/hello_imgui/hello_imgui/src/hello_imgui/libhello_imgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libstb_hello_imgui.a  external/glfw/glfw/src/libglfw3dll.a  external/hello_imgui/hello_imgui/src/hello_imgui/libglad.a  -lopengl32  external/libimgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  external/libimgui.a  external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/libimgui.a(imgui_impl_opengl2.cpp.obj):imgui_impl_opengl2.cpp:(.text.unlikely+0xb8): undefined reference to `__imp_glGetIntegerv'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/libimgui.a(imgui_impl_opengl2.cpp.obj):imgui_impl_opengl2.cpp:(.text.unlikely+0xc5): undefined reference to `__imp_glGenTextures'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0x4b): undefined reference to `__imp_Py_IsInitialized'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0x62): undefined reference to `__imp_PyEval_SaveThread'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0x8a): undefined reference to `__imp_Py_IsInitialized'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0x9f): undefined reference to `__imp_PyEval_RestoreThread'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0xc8): undefined reference to `__imp_Py_IsInitialized'
  C:/lang/perl/c/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a(imgui_te_python_gil.cpp.obj):imgui_te_python_gil.cpp:(.text+0x137): undefined reference to `__imp_Py_IsInitialized'
  collect2.exe: error: ld returned 1 exit status
  ninja: build stopped: subcommand failed.


  *** CMake build failed
  error: subprocess-exited-with-error

  × Building wheel for imgui-bundle (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
  full command: 'C:\venvs\imgui\Scripts\python.exe' 'C:\venvs\imgui\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py' build_wheel 'C:\tmp\tmpcoy0uem9'
  cwd: C:\mydev\gitclones\imgui_bundle
  Building wheel for imgui-bundle (pyproject.toml) ... error
  ERROR: Failed building wheel for imgui-bundle
Failed to build imgui-bundle
ERROR: Failed to build installable wheels for some pyproject.toml based projects (imgui-bundle)

However, pip install imgui-bundle worked.

So what's the difference?

@pthom
Copy link
Owner

pthom commented Mar 18, 2025

Hi,

I just tried this on windows 11 with visual studio 2022:


C:\Utils\Python\Python312\python.exe -m venv venv
.\venv\Scripts\activate

git clone https://github.com/pthom/imgui_bundle.git
cd .\imgui_bundle\
git submodule update --init --recursive

pip install -v .

And it worked. I cannot reproduce your issue.

However, I see that you are compiling with x86_64-w64-mingw32. I do not support this for python bindings. Please compile with msvc

@pthom pthom changed the title Source installation fails when using a venv Source installation fails when using a venv + mingw Mar 18, 2025
@pthom pthom changed the title Source installation fails when using a venv + mingw pip source installation fails when using a venv + mingw Mar 18, 2025
@pthom pthom added the wontfix This will not be worked on label Mar 18, 2025
@pthom pthom closed this as completed Mar 18, 2025
@eabase
Copy link
Author

eabase commented Mar 20, 2025

However, I see that you are compiling with x86_64-w64-mingw32. I do not support this for python bindings. Please compile with msvc.

No I am not. This is weird.

I'm using normal pip Python3.12 distro for Windows. I have perl installed, so I have no idea why or what is trying to access the Perl provided compiler and linker, x86_64-w64-mingw32 linker (/bin/ld.exe).

[215/215] C:\WINDOWS\system32\cmd.exe /C "cd . && C:\lang\perl\c\bin\c++.exe -O3 -DNDEBUG   -shared -o _imgui_bundle.cp312-win_amd64.pyd -Wl,--major-image-version,0,--minor-image-version,0 CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/module.cpp.obj

CMakeFiles/_imgui_bundle.dir/external/bindings_generation/cpp/pybind_imgui_bundle.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_backends.cpp.obj C
MakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_test_engine.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui/bindings/pybind_imgui_internal.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/hello_imgui/bindings/pybind_hello_imgui.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/ImCoolBar/bindings/pybind_imcoolbar.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/ImFileDialog/bindings/pybind_im_file_dialog.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui-command-palette/bindings/pybind_imgui_command_palette.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui-knobs/bindings/pybind_imgui_knobs.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui-node-editor/bindings/pybind_imgui_node_editor.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui_md/bindings/pybind_imgui_md.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui_tex_inspect/bindings/pybind_imgui_tex_inspect.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imgui_toggle/bindings/pybind_imgui_toggle.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/ImGuiColorTextEdit/bindings/pybind_imgui_color_text_edit.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/ImGuizmo/bindings/pybind_imguizmo.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/immapp/bindings/pybind_immapp_cpp.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/immvision/bindings/pybind_immvision.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/implot/bindings/pybind_implot_internal.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/implot3d/bindings/pybind_implot3d_internal.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/imspinner/bindings/pybind_imspinner.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/portable_file_dialogs/bindings/pybind_portable_file_dialogs.cpp.obj 
CMakeFiles/_imgui_bundle.dir/external/nanovg/bindings/pybind_nanovg.cpp.obj 

-LC:/lang/Python312/libs libnanobind-static.a  
-lopengl32  C:/lang/Python312/libs/python312.lib  
external/libimgui_node_editor.a  
external/libimgui_md.a  
external/immapp/immapp/libimmapp.a  
external/libimgui_node_editor.a  
external/libimgui_md.a  
external/immapp/immapp/libimmapp.a  
external/libimgui_pywrappers.a  
external/libimplot3d.a  
external/libimguizmo.a  
external/libimgui_tex_inspect.a  
external/libnvg_imgui.a  
external/nanovg/nanovg/libnanovg.a  
external/libimgui_knobs.a  
external/libimspinner.a  
external/libimgui_toggle.a  
external/libimgui_command_palette.a  
external/libimcoolbar.a  
external/ImGuiColorTextEdit/libimgui_color_text_edit.a  
external/libimplot.a  
external/libim_file_dialog.a  
external/hello_imgui/hello_imgui/src/hello_imgui/libhello_imgui.a  
external/hello_imgui/hello_imgui/src/hello_imgui/libstb_hello_imgui.a  
external/glfw/glfw/src/libglfw3dll.a  
external/hello_imgui/hello_imgui/src/hello_imgui/libglad.a  -lopengl32  
external/libimgui.a  
external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  
external/libimgui.a  
external/hello_imgui/hello_imgui/src/hello_imgui/libimgui_test_engine.a  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."

Must be something wrong in the CMakeFiles or Compiler env variables... I didn't run this from the Developer Environment (Powershell) so maybe it has trouble finding a compiler and just used anything in the path.

@pthom pthom reopened this Mar 20, 2025
@pthom pthom removed the wontfix This will not be worked on label Mar 20, 2025
@pthom
Copy link
Owner

pthom commented Mar 20, 2025

Did you try to remove C:\lang\perl\c\bin from your PATH prior to running pip install

@fleimgruber
Copy link

fleimgruber commented Mar 25, 2025

Just ran into this and removed MSYS2/MinGW related paths from PATH, can confirm it compiles cleanly now with msvc.

@pthom pthom added faq A frequent issue, remaining opened to facilitate discoverability and removed cant_reproduce labels Mar 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
faq A frequent issue, remaining opened to facilitate discoverability
Projects
None yet
Development

No branches or pull requests

3 participants