Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

The path where headers are installed on Windows is not found (by default) by setuptools

Open
#78 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
38/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp, python
Domain
build-system

Research direction

Start with the setup.py reproduction and pkg.cpp example, then inspect how the Windows conda package places xtensor-python headers under $envprefix/Library/include. Confirm the change by running python setup.py build on Windows and verifying setuptools finds the headers from the default include path.

Written by the indexing model from the issue text.

Description

Issue:
On Linux, the conda xtensor-python package installs the headers at $envprefix/include, which is searched by default when building extensions with setuptools. This is good!
On Windows, however, the headers are installed at $envprefix/Library/include, which is not searched by setuptools by default (one needs to fiddle with os.environ["CONDA_PREFIX"] in setup.py to add the path). Instead, they could be installed at $envprefix/include, and things would work fine.

One can repro e.g. by running python setup.py build with the following setup.py:

from setuptools import setup
from pybind11.setup_helpers import Pybind11Extension                                                                                                                                                                                            setup(
    name="testpkg",
    ext_modules=[Pybind11Extension("pkg", ["pkg.cpp"])],
)

and pkg.cpp, basically copied from xtensor-python's docs:

#include <numeric>                        // Standard library import for std::accumulate
#include "pybind11/pybind11.h"            // Pybind11 import to define Python bindings
#include "xtensor/xmath.hpp"              // xtensor import for the C++ universal functions
#define FORCE_IMPORT_ARRAY                // numpy C api loading
#include "xtensor-python/pyarray.hpp"     // Numpy bindings

double sum_of_sines(xt::pyarray<double>& m)
{
    auto sines = xt::sin(m);  // sines does not actually hold values.
    return std::accumulate(sines.cbegin(), sines.cend(), 0.0);
}

PYBIND11_MODULE(pkg, m)
{
    xt::import_numpy();
    m.doc() = "Test module for xtensor python bindings";

    m.def("sum_of_sines", sum_of_sines, "Sum the sines of the input values");
}

(Note that the same problem actually applies for xtensor itself, but I'm only opening it here.)


Environment (conda list):

Clean environment created with conda create -n tmpenv -c conda-forge python=3.9 xtensor-python.

$ conda list
# packages in environment at C:\Users\Antony\miniconda3\envs\tmpenv:
#
# Name                    Version                   Build  Channel
ca-certificates           2021.5.30            h5b45459_0    conda-forge
certifi                   2021.5.30        py39hcbf5309_0    conda-forge
intel-openmp              2021.2.0           h57928b3_616    conda-forge
libblas                   3.9.0                     9_mkl    conda-forge
libcblas                  3.9.0                     9_mkl    conda-forge
liblapack                 3.9.0                     9_mkl    conda-forge
mkl                       2021.2.0           hb70f87d_389    conda-forge
numpy                     1.20.3           py39h6635163_1    conda-forge
openssl                   1.1.1k               h8ffe710_0    conda-forge
pip                       21.1.2             pyhd8ed1ab_0    conda-forge
pybind11                  2.6.2            py39h2e07f2f_0    conda-forge
pybind11-global           2.6.2            py39h2e07f2f_0    conda-forge
python                    3.9.4           h7840368_0_cpython    conda-forge
python_abi                3.9                      1_cp39    conda-forge
setuptools                49.6.0           py39hcbf5309_3    conda-forge
sqlite                    3.35.5               h8ffe710_0    conda-forge
tbb                       2021.2.0             h2d74725_0    conda-forge
tzdata                    2021a                he74cb21_0    conda-forge
vc                        14.2                 hb210afc_4    conda-forge
vs2015_runtime            14.28.29325          h5e1d092_4    conda-forge
wheel                     0.36.2             pyhd3deb0d_0    conda-forge
wincertstore              0.2             py39hcbf5309_1006    conda-forge
xtensor                   0.23.10              h5362a0b_0    conda-forge
xtensor-python            0.25.2           py39h66837cb_0    conda-forge
xtl                       0.7.2                h5362a0b_1    conda-forge

Details about conda and system ( conda info ):
$ conda info
     active environment : tmpenv
    active env location : C:\Users\Antony\miniconda3\envs\tmpenv
            shell level : 3
       user config file : C:\Users\Antony\.condarc
 populated config files :
          conda version : 4.9.2
    conda-build version : 3.20.5
         python version : 3.8.3.final.0
       virtual packages : __win=0=0
                          __archspec=1=x86_64
       base environment : C:\Users\Antony\miniconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\Antony\miniconda3\pkgs
                          C:\Users\Antony\.conda\pkgs
                          C:\Users\Antony\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\Antony\miniconda3\envs
                          C:\Users\Antony\.conda\envs
                          C:\Users\Antony\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.9.2 requests/2.23.0 CPython/3.8.3 Windows/10 Windows/10.0.19041
          administrator : False
             netrc file : None
           offline mode : False
Dominant language
Shell
Stars
1
Forks
12
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from conda-forge/xtensor-python-feedstock

All issues in conda-forge/xtensor-python-feedstock

Similar issues

More Shell/Bash issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.