安装指南

系统需求

TODO需要潘岩松增加相关内容

下载源代码

使用如下命令下载源代码

git clone http://62.234.201.16/Eirrac/Eden.git

LINUX系统下编译及安装

创建Conda虚拟环境

创建anaconda虚拟环境并安装python3.8和boost

conda create -n eden python=3.8 boost=1.73

然后在~/.bashrc中写入环境变量

export EDEN=[path to your anaconda root]/envs/eden

激活环境

conda activate eden

环境后端cpp代码编译

在下载好的代码根目录Eden下,执行如下命令

mkdir build
cmake .. -DCMAKE_BUILD_TYPE=Release && make -j

编译完成后,build目录下生成可执行文件edentest以及动态链接库文件eden_cpp.soeden_py.so

若不添加CMAKE_BUILD_TYPE选项,编译版本为Debug版本。

环境的python接口安装

在虚拟环境中以开发方式安装python库eden:

conda activate eden
pip install -e python/

运行[path to Eden root]/main.py,如果能够不报错,则说明安装正常。

Windows(MSVC)系统下编译与安装

Windows(MSVC)下目前编译相对比较繁琐,需要手动添加项目。非开发人员建议不要手动编译,直接下载提供好的动态链接库和python扩展文件可以满足一般使用需求。

下面的示例均在Windows 11 22000版本,Visual Studio 2022环境下测试通过。

使用预编译版本运行

使用git下载源代码之后,切换到windows-prebuilt分支,执行如下命令

conda create -n eden python=3.8
conda activate eden
pip install -e python/
python -m eden.interactive

即可直接运行示例。

前置: MSVC与boost的安装

建议安装最新版本的Visual Studio,然后使用vcpkg安装boost(限于vcpkg特性,仅支持最新版本的python),vcpkg入门请参考官方文档

中文用户的常见问题:

  1. 如果Visual Studio的安装语言不包含英文,需要使用visual studio installer安装英文语言包才能使用vcpkg;

  2. 低版本的Visual Studio需要手动绑定vcpkg才能使用,推荐升级到最新版的Visual Studio。

vcpkg install boost:x64-windows

环境后端cpp代码编译

※ Step1: 创建新项目

点击 文件 > 新建 > 项目,在弹出菜单中选择"控制台应用"项目模板,点击下一步。项目名称和位置任选,以下名称将选为eden_cpp。

※ Step2: 添加源文件

移动到"解决方案资源管理器"面板,右键单击"源文件",选择 添加 > 现有项,将项目路径下的全部cpp文件添加到解决方案中。(python\interface.cpp不用添加,添加可能会报错)

常见问题:

  1. Visual Studio会默认生成一个Hello World的cpp文件,删掉就行;
  2. 如果没有看到"解决方案资源管理器"面板,请到视图菜单中调出;
  3. 添加文件时可以搜索.cpp并全选,并不需要一个个添加。

※ Step3: 调整项目属性

在"解决方案资源管理器"面板中选中eden_cpp,然后点击菜单栏中的 项目 > 属性。

在弹出的eden_cpp属性页中,

  • 点击"常规",确保C++语言标准选用/std:c++latest;
  • 点击"调试",工作目录设置为${EDEN_ROOT}下任意子目录;
  • 点击"VC++目录",在包含目录中增加$EdenRoot\include和$EdenRoot\custom。

※ Step 4: 编译运行

在菜单栏中选择 生成 > 生成解决方案。然后,点击 调试 > 运行。

常见问题:

如果运行路径没有选择${EDEN_ROOT}下的任意子目录,这里可能会生成成功,但运行时segmentation fault,原因是找不到config文件。为解决这个问题,也可以到main.cpp中把路径改掉。

环境的python接口安装

※ Step1: 配置python(latest)–此处用python3.10做示例。

可以使用venv或是anaconda一类的虚拟环境,也可以使用系统python3.10。以conda为例:

conda create -n eden python=3.8

※ Step2: 创建新项目

选择"动态链接库(DLL)"项目模板,项目名称和位置任意,以下称为eden_py

※ Step3: 添加源文件

移动到"解决方案资源管理器"面板,右键单击"源文件",选择 添加 > 现有项,将项目路径下的全部cpp文件添加到解决方案中。(main.cpp不用添加,添加可能会报错)

※ Step4: 调整项目属性

调整解决方案为Release-x64,然后在"解决方案资源管理器"面板中选中eden_cpp,点击菜单栏中的 项目 > 属性。

在弹出的eden_cpp属性页中,

  • 点击"常规",确保C++语言标准选用/std:c++latest,确保目标文件名为eden_py(必须和interface.cpp中的MODULE名称一致);

  • 点击"高级",目标文件扩展名改成.pyd

  • 点击"VC++目录",在包含目录中增加$EdenRoot\include和$EdenRoot\custom;然后找到你所使用的python包含文件目录,也添加到VC++目录中。在引用目录中增加python的lib目录(python310.lib所在的目录)

    包含目录在anaconda中是anaconda\envs\$EnvName\include,如果是系统python可能是C:\Python310\include

    引用目录在anaconda中是anaconda\envs\$EnvName\libs,如果是系统python可能是C:\Python310\libs

  • 点击C/C++,在 代码生成 > 运行库中选多线程/MT;预编译头选择不使用。

※ Step5: 编译

在菜单栏中选择 生成 > 生成解决方案。

然后,找到生成文件(一般在x64/Release下),选择dll或pyd结尾的四个文件,复制到$EdenRoot\python\eden\backend中。

※ Step6: 安装到python

在$EdenRoot下运行

pip install -e python/

然后尝试:

python -m eden.interactive

是否可以运行。