Что вы хотите сделать, не поддерживается. В отличие от, скажем, интерпретатора CPython или даже интерпретатора V8 JavaScript, Node.js не был предназначен для встраивания, не имеет интерфейса для этого и не имеет серьезного плана для его изменения.
Я не могу найти официальную документацию, но есть многочисленные потоки, такие как this one, которые предоставляют соответствующую информацию.
Но это не значит, что это невозможно. Верхний слой узла не настолько сложный, и на самом деле вам просто нужно исправить некоторые его части, чтобы делать разные вещи. И, на самом деле, люди пытались сделать именно это, в проектах вроде tacnode
. Я не знаю, готовы ли они к прайм-тайм или нет, но, возможно, стоит посмотреть на них, особенно если вы готовы и можете внести свой вклад, если они неполны.
Конечно, это только дает вам возможность встраивания в C или C++; вам все равно нужно встроить в Python. Но обертывание совместно используемой библиотеки C, чтобы вы могли использовать ее в Python (ну, CPython и PyPy) является долгой проблемой; У Python есть модули расширения с самого начала, а также ctypes
и cffi
, если вы не хотите писать код C. И есть сторонние проекты, такие как Cython, чтобы вы могли писать почти-Python-код, который напрямую вызывает вашу общую библиотеку, как если бы она была родной C, и компилируется в модуль расширения Python.
Таким образом, это почти наверняка выполнимо, но это, вероятно, не будет тривиально, или упаковано и готово выйти из коробки.
Что вы хотите сделать, что вы не можете просто работать с узлом, работающим бок о бок с вашим скриптом python или просто узлом? – bitoiu
Вместо того, чтобы спрашивать конкретно о Python, вы должны сначала спросить, может ли Node быть встроен в приложение C (или C++). Если это невозможно, вложение его в Python (по крайней мере, CPython, что вы, вероятно, захотите) не будет возможно; если это так, вложение его в Python, в худшем случае, будет вопросом обматывания вложения C в модуле расширения Python C или вызове его через 'ctypes' или' cffi' – abarnert
Между тем, последний раз я проверил (что было давно ...) , Node (в отличие от CPython ... или, если на то пошло, V8) не имел официальной поддержки встраивания, и никаких планов не добавлять, но были разные сторонние обертки, такие как ['tacnode'] (https://github.com/ZECTBynmo/tacnode), которые вы можете исследовать. – abarnert