boost::python::numpy causing python crash when numpy not installed
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 30/100
Direção de pesquisa
Comece pelo ponto de entrada BOOST_PYTHON_MODULE relatado e pela chamada a np::initialize(), depois reproduza a importação com numpy ausente. Inspecione como a inicialização do Boost.Python NumPy propaga ModuleNotFoundError ou ImportError durante a importação da extensão. Está concluído quando a falha puder ser capturada pelo Python em vez de encerrar o interpretador.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
The following code causes python to exit (crash?) upon import when numpy is not installed. It looks like a ModuleNotFoundError does get thrown but it's not catchable and python simply exits. It's hard to tell if this is exit() being called or an actual crash. I would expect a catchable ModuleNotFoundError or ImportError to be thrown and python not to exit.
#define BOOST_PYTHON_STATIC_LIB
#define BOOST_NUMPY_STATIC_LIB
#include <boost/python.hpp>
#include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
#include <boost/python/numpy.hpp>
namespace py = boost::python;
namespace np = boost::python::numpy;
template<class T>
np::ndarray to_numpy(const std::vector<T> &vec)
{
Py_intptr_t shape[1] = { static_cast<Py_intptr_t>(vec.size()) };
np::ndarray result = np::zeros(1, shape, np::dtype::get_builtin<T>());
std::copy(vec.begin(), vec.end(), reinterpret_cast<T*>(result.get_data()));
return result;
}
BOOST_PYTHON_MODULE(HelloBoostPython)
{
np::initialize();
py::class_<std::vector<double>>("DoubleVector")
.def(py::init<size_t>())
.def(py::init<size_t, const double&>())
.def(py::vector_indexing_suite<std::vector<double>>())
.def("to_numpy", to_numpy<double>)
;
}
prompt:
(base) C:\Development\HelloBoostPython\Debug>python
Python 3.7.4 (default, Aug 9 2019, 18:22:51) [MSC v.1915 32 bit (Intel)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import HelloBoostPython
ModuleNotFoundError: No module named 'numpy'
ImportError: numpy.core._multiarray_umath failed to import
(base) C:\Development\HelloBoostPython\Debug>
If it matters, this is with boost 1.70 using visual studio 2017 to build.
- Linguagem predominante
- C++
- Estrelas
- 537
- Forks
- 223
- Merge médio
- 11h 22min
- PRs com merge (30d)
- 2
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de boostorg/python
-
numpy::from_data calls vector::front and crashes (or has UB) when called with a scalar object Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 84/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
-
BoostDetectToolset-1.90.0.cmake file not found in an include() call in boost_python-config.cmake Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 48/100
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
Todas as issues de boostorg/python
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
duckdb/duckdb-wasm#2258 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
objectionary/eo-graphs#75 ·
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Abertacoarray
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
FISCO-BCOS/FISCO-BCOS#5642 ·