boost::python::numpy causing python crash when numpy not installed
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 30/100
Piste de recherche
Commencez par le point d’entrée BOOST_PYTHON_MODULE signalé et l’appel à np::initialize(), puis reproduisez l’importation en l’absence de numpy. Examinez comment l’initialisation de Boost.Python NumPy propage ModuleNotFoundError ou ImportError lors de l’importation de l’extension. C’est terminé lorsque l’échec peut être intercepté par Python au lieu d’entraîner l’arrêt de l’interpréteur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- C++
- Étoiles
- 537
- Forks
- 223
- Merge moyen
- 11 h 22 min
- PR mergées (30 j)
- 2
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de boostorg/python
-
numpy::from_data calls vector::front and crashes (or has UB) when called with a scalar object Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 84/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
-
BoostDetectToolset-1.90.0.cmake file not found in an include() call in boost_python-config.cmake Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
Toutes les issues de boostorg/python
Issues similaires
-
ai_reviewed
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
ydb-platform/ydb#53869 · 3 commentaires ·
-
bug cert blocker needs triage
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
project-chip/connectedhomeip#74373 ·
-
[request] tracy/0.14.1 Ouverteupstream update
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
conan-io/conan-center-index#31035 ·
-
Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
documentation
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
vllm-project/vllm-ascend#17329 ·