The path where headers are installed on Windows is not found (by default) by setuptools
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
- 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
- I read the conda-forge documentation and could not find the solution for my problem there.
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
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from conda-forge/xtensor-python-feedstock
-
bug
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in conda-forge/xtensor-python-feedstock
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Piwigo/piwigo-docker#18 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
docs: tutorial 7 still references removed A2AStarletteApplicationPossibly taken @FOWEPJF255 claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 92/100
a2aproject/A2A#2321 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
OpenSlides/OpenSlides#7180 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day