Некоторое время назад я создал привязку Python для одного из своих проектов и только сейчас хотел снова его забрать. Привязка больше не работала, так как python больше не мог ее импортировать - тогда все это работало нормально.
Затем я решил разбить ее до самого простого примера:
binding.cpp
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(TestBinding, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
CMakeLists.txt:
cmake_minimum_required( VERSION 3.2 )
project(TestBinding)
add_subdirectory(pybind11) # or find_package(pybind11)
pybind11_add_module(TestBinding binding.cpp)
# Configure project to inject source path as include directory on dependent projects
target_include_directories( TestBinding
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pybind11/include/> )
set_target_properties( TestBinding
PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
PREFIX ""
SUFFIX ".so"
)
Затем у меня есть очень простой файл test.py, который идеткак это:
sys.path.insert(0, "/path/to/so/lib/")
from TestBinding import *
... который когда-то выполнялся, всегда дает мне следующую ошибку:
from TestBinding import *
ModuleNotFoundError: No module named 'TestBinding'
Я буквально больше не представляю, что в мире могло измениться, когдаработал нормально и сейчас.
Вот еще несколько сведений о моей рабочей среде:
- Windows 10
- Visual Studio 15 2017 Win64
- Python 3.7 (также пробовал 3.5 и 3.6)
Я что-то упускаю действительно очевидное?