The path where headers are installed on Windows is not found (by default) by setuptools
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Ambito
- build-system
Direzione di ricerca
Inizia con la riproduzione di setup.py e l'esempio pkg.cpp, quindi esamina come il pacchetto conda per Windows posiziona gli header di xtensor-python in $envprefix/Library/include. Conferma la modifica eseguendo python setup.py build su Windows e verificando che setuptools trovi gli header dal percorso di inclusione predefinito.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
- 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
- Lingua principale
- Shell
- Stelle
- 1
- Fork
- 12
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di conda-forge/xtensor-python-feedstock
-
Support Pypy as interpreter Apertabug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di conda-forge/xtensor-python-feedstock
Issue simili
-
align on terminology Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
CycloneDX/transparency-exchange-api#393 · 1 commento ·
-
module/agent platform/macos type/bug/regression
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
CachyOS/cachyos-aur-derived#754 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
CrowdStrike/falcon-scripts#528 ·
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100