libQasm Python包

libqasm的Python项目详细描述


libQASM:解析cQASM v1.0文件的库

CIPyPIAnacondaAPI docs

依赖关系

  • 弹性(>;2.6)
  • 野牛(>;3.0)
  • cmake(>2.8)
  • GCC和G++的C++ 11标准
  • MinGW(用于Windows版本)
  • doctest(作为git子模块)
  • Python3(在pythonv3.6上测试)
  • 痛饮
    • Linux:3.0.12版
    • Windows:4.0.0

使用MSVC(Visual C++)的EH3> Windows环境

libqasm应该与为building OpenQL from sources on Windows描述的环境一起工作。如果这个链接断了,下面是一个总结。在

下载并安装以下工具。当提示您是否要将它们添加到路径时,请执行此操作。在

下载以下工具的摘录,然后手动将包含可执行文件的目录添加到您的路径中:

您还应该了解Python的安装位置和安装方式,并使用PYTHON_INCLUDE和{}环境变量链接其include目录和pythonXX.dll文件。对我来说,这些是:

  • PYTHON_INCLUDE->;C:\Users\IEUser\AppData\Local\Programs\Python\Python38\include
  • PYTHON_LIB->;C:\Users\IEUser\AppData\Local\Programs\Python\Python38\python38.dll

接下来,在提升的Powershell(即“以管理员身份运行”)中运行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Install-Module -AllowClobber -Name Pscx -RequiredVersion 3.2.2

最后,每当您打开Powershell进行构建时,首先运行ONE,具体取决于您的MSVC版本(您可能还需要修改版本号…):

^{pr2}$

组织

  • cqasmv1.0的原始论文和BNF规范位于./doc目录中。但是,请注意,从那时起,语言已经发生了一定程度的变化,并且卡西姆银行从未完全符合flex/bison语法。新的、最新的文档正在进行中。在
  • 目前有两个C++ API版本包含在这个存储库中,一个新的API仍然被使用,并且原始的即将被弃用的API被保持用于向后兼容的目的。新的API完全自包含在./src/cqasm目录中。旧的API是以前的样子,它的源代码位于./src/library中,其测试位于./src/tests中。在

安装/使用库

来自Python

从项目根目录安装,如下所示:

python -m pip install .

或者如果你想用康达:

conda build python/conda
conda install libqasm --use-local

您可以使用

python -m unittest discover -s src/tests -v

或者,如果您愿意,可以使用pytest

python -m pytest

现在您应该能够import libQasm来使用原始API的绑定。新的API还没有Python绑定。在

< CMake >使用C++,不安装EH3>

在CMake项目中使用libqasm最简单的方法是将此存储库作为子模块克隆到存储库中,然后使用

add_subdirectory(libqasm) # or wherever your submodule is
target_link_libraries(<your target> cqasm)

target_link_libraries()指令应该自动将libqasm新API的public include目录添加到目标的include路径中。你需要对每个目标都这样做。在

默认情况下,原始API头包括not。要启用这些,请在add_subdirectory()指令之前添加option(LIBQASM_COMPAT "" ON)。在

H3>从C++通过手动安装(仅在Linux上测试)< EH3>

根目录中的CMakeLists.txt文件包括安装目标:

mkdir cbuild
cd cbuild
cmake .. <directives, see below>
make -j <Number of processors>
make install

您可能需要向cmake命令添加一个或多个指令:

  • -DLIBQASM_COMPAT=yes:在新API的头上安装原始API的头。在
  • -DBUILD_SHARED_LIBS=yes:构建共享对象库而不是静态库(如果适用)。在
  • -DCMAKE_INSTALL_PREFIX=<directory>:指定库将安装到的目录,以防您想覆盖操作系统的默认值。在

测试库

Linux和MacOS

git submodule update --init --recursive
mkdir cbuild
cd cbuild
cmake .. -DLIBQASM_BUILD_TESTS=yes -DLIBQASM_COMPAT=yes
make -j <Number of processors>
make test

Windows+MinGW

与上面一样,只是我们将使用MinGW工具链。您应该首先获取mingw-w64并安装它。在

git submodule update --init --recursive
mkdir cbuild
cd cbuild
cmake -G "MinGW Makefiles" .. -DLIBQASM_BUILD_TESTS=yes -DLIBQASM_COMPAT=yes
mingw32-make.exe
mingw32-make.exe test

这将输出_libQasm.pydliblexgram.dll和一个静态库liblexgramstatic.a

Windows+MSVC

从Windows环境安装说明继续(不要忘记先运行vcvarsall.bat):

git submodule update --init --recursive
mkdir cbuild
cd cbuild
cmake .. -DLIBQASM_BUILD_TESTS=yes -DLIBQASM_COMPAT=yes
cmake --build .
cmake --build . --target RUN_TESTS

Docker

这将在一个容器中测试库,其中包含libqasm的最低要求。在

docker build .

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在Android Studio中使用while循环显示包含textview对象的数据   创建名为“userController”的bean时发生java错误:通过字段“userService”表示未满足的依赖关系   java PDFBox PDFImageWrite。writeImage未正确处理所有字符   java无法识别代码中的nzec错误   无法更改java TabLayout字体   在Java中使用子字符串删除部分字符串   Java中的listener addPropertyChangeListener方法   java可以同时拖动多个对象   java如何将数组中的值添加到向量中   java为什么在Camel 3.7.3中无法正确计算属性?   与后端问题不同的机器中的java客户端资源   带字符串的java分割字节数组?   java On_选项_项目_选择的方法说明   java如何在画布的父画中画一个圆?   连接超时和打开连接数的java Netty通道配置   java mysql中如何防止向数据库中插入重复数据   升级到macOS Big Sur后,java无法启动Neo4j控制台应用程序   在Java中使用XSLT将XML转换为HTMLString的ajax   java无法使用Apache POI获取Excel工作表中的数据