如何将 NEST 的 Python 模块安装到特定的站点包目录中?

How to install NEST's Python module into a specific site-packages directory?

手头的具体问题是:

How could I install the nest module of a NEST simulator installation into a specific site-packages directory of for example a pyenv/virtualenv?

但是,当然欢迎更广泛地解释如何在 NEST CMake 本身期间生成和安装 Python 模块。例如,用于安装 Python 文件的 setup.py 文件在哪里,我注意到一些典型的 pip 文件 egg-info ?我想如果我知道我可以使用 pip 在我想要的任何地方安装模块。另一个附带问题是 Python 模块安装目标是否可以从 CMake 配置?

NEST 不是 Python 包,Python 模块依赖于在已知位置可用的已编译模块库。例如,当使用 Conda 风格时,您可以使用 cmake -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX(在目标环境中时)安装 NEST,以便将所有内容安装到环境目录树中。

对于 self-built 模块,除了 .py 文件位于对应的 Python 查找其模块的目录中(例如 .../site-packages),创建的 .so 文件需要放在动态加载程序可以找到它们的地方。

尝试将 .so 文件复制到 NEST 安装目录 path/to/installed/lib/nest/ 并将 python 文件复制到您的环境的 site-packagespynest 本身也有一个 setup.py,您可以在 pynest/setup.py 的构建目录中找到它。然而,由于上述二进制依赖性,python 包并不打算单独分发。

请注意,您必须注意一致性。您不能将为一个 Python 版本编译的模块与另一个 Python 版本等一起使用。通常,依赖关系是一件棘手的事情,例如使用模块中的 libGSL 也应该与编译 NEST 等时使用的相同。这基本上也使用相同的编译器。