pyquil

A Python library for quantum programming using Quil.

Github星跟蹤圖

PyQuil: Quantum programming in Python

binder
gitlab
docs
coverage
docker
pepy
pypi
slack

PyQuil is a Python library for quantum programming using Quil,
the quantum instruction language developed at Rigetti Computing.
PyQuil serves three main functions:

PyQuil has a ton of other features, which you can learn more about in the
docs. However, you can also keep reading
below to get started with running your first quantum program!

Quickstart with interactive tutorial notebooks

Without installing anything, you can quickly get started with quantum programming by exploring
our interactive Jupyter notebook tutorials and examples. To run them in a preconfigured
execution environment on Binder, click the "launch binder" badge at the top of the
README or the link here! To learn more about the tutorials and how you can add your own,
visit the rigetti/forest-tutorials repository. If you'd rather set everything
up locally, or are interested in contributing to pyQuil, continue onto the next section for
instructions on installing pyQuil and the Forest SDK.

Installing pyQuil and the Forest SDK

pypi
conda-forge
conda-rigetti

PyQuil can be installed using conda, pip, or from source. To install it from PyPI (via pip),
do the following:

pip install pyquil

To instead install pyQuil from source, do the following from within the repository after cloning it:

pip install -e .

If you choose to use pip, we highly recommend installing pyQuil within a virtual environment.

PyQuil, along with quilc, the QVM, and other libraries, make up what is called the Forest
SDK. To make full use of pyQuil, you will need to additionally have installed
quilc and the QVM.
For more information, check out the docs!

Running your first quantum program

In just a few lines, we can use pyQuil with the Forest SDK to simulate a Bell state!

from pyquil import get_qc, Program
from pyquil.gates import CNOT, H, MEASURE
 
qvm = get_qc('2q-qvm')
 
p = Program()
p += H(0)
p += CNOT(0, 1)
ro = p.declare('ro', 'BIT', 2)
p += MEASURE(0, ro[0])
p += MEASURE(1, ro[1])
p.wrap_in_numshots_loop(10)
 
qvm.run(p).tolist()

The output of the above program should look something like the following,
the statistics of which are consistent with a two-qubit entangled state.

[[0, 0],
 [1, 1],
 [1, 1],
 [1, 1],
 [1, 1],
 [0, 0],
 [0, 0],
 [1, 1],
 [0, 0],
 [0, 0]]

Using the Forest SDK, you can simulate the operation of a real quantum processor (QPU). If you
would like to run on the real QPUs in our lab in Berkeley, you can sign up for an account
on Quantum Cloud Services (QCS)!

Joining the Forest community

If you'd like to get involved with pyQuil and Forest, joining the
Rigetti Forest Slack Workspace is a great place to start! You can do so by
clicking the invite link in the previous sentence, or in the badge at the top of this README.
The Slack Workspace is a great place to ask general questions, join high-level design discussions,
and hear about updates to pyQuil and the Forest SDK.

To go a step further and start contributing to the development of pyQuil, good first steps are
reporting a bug, requesting a feature, or picking up one of the issues with the
good first issue or help wanted labels. Once you find an issue to work
on, make sure to fork this repository and then open a pull request once your changes
are ready. For more information on all the ways you can contribute to pyQuil (along with
some helpful tips for developers and maintainers) check out our
Contributing Guide!

To see what people have contributed in the past, check out the Changelog for
a detailed list of all announcements, improvements, changes, and bugfixes. The
Releases page for pyQuil contains similar
information, but with links to the pull request for each change and its corresponding author.
Thanks for contributing to pyQuil! ?

Citing pyQuil, Forest, and Quantum Cloud Services

zenodo

If you use pyQuil, Grove, or other parts of the Forest SDK in your research, please cite
the Quil specification using the following BibTeX snippet:

@misc{smith2016practical,
    title={A Practical Quantum Instruction Set Architecture},
    author={Robert S. Smith and Michael J. Curtis and William J. Zeng},
    year={2016},
    eprint={1608.03355},
    archivePrefix={arXiv},
    primaryClass={quant-ph}
}

Additionally, if your research involves taking data on Rigetti quantum processors (QPUs) via
the Quantum Cloud Services (QCS) platform, please reference the QCS paper using the
following BibTeX snippet:

@misc{karalekas2020quantumclassical,
    title={A quantum-classical cloud platform optimized for variational hybrid algorithms},
    author={Peter J. Karalekas and Nikolas A. Tezak and Eric C. Peterson
            and Colm A. Ryan and Marcus P. da Silva and Robert S. Smith},
    year={2020},
    eprint={2001.04449},
    archivePrefix={arXiv},
    primaryClass={quant-ph}
}

License

PyQuil is licensed under the
Apache License 2.0.

主要指標

概覽
名稱與所有者rigetti/pyquil
主編程語言Python
編程語言Python (語言數: 4)
平台
許可證Apache License 2.0
所有者活动
創建於2017-01-09 21:30:22
推送於2025-06-13 20:07:42
最后一次提交2025-05-05 14:43:00
發布數299
最新版本名稱v4.16.2 (發布於 )
第一版名稱0.0.2 (發布於 )
用户参与
星數1.5k
關注者數83
派生數353
提交數1.4k
已啟用問題?
問題數789
打開的問題數213
拉請求數881
打開的拉請求數20
關閉的拉請求數130
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?