We would like to make the Python UX as easy as possible. One issue we will have is with pyQuil: we want uses to be able to use pyQuil with or without libquil available. If libquil is installed on their system and they want to use it -- awesome. But if libquil is not available on their system, they should still be able to pip install pyquil without issue.
The problem arises in this situation:
- user runs
pip install pyquil
pyquil depends on qcs-sdk-python
qcs-sdk-python will need to be compiled with libquil support (as there is no way to configure this with the Python package system)
qcs-sdk-python will look for libquil.h in order to generate its bindings
If the user has not installed libquil, the final step will fail.
One way I see around this is to remove the need to generate the bindings at compile time, by having them stored in the libquil-sys repo. We have done this in other projects: in build.rs support a feature flag which turns on the binding generator if they need to be regenerated. Otherwise, the bindings are loading from the repo (with include_file!()).
We would like to make the Python UX as easy as possible. One issue we will have is with pyQuil: we want uses to be able to use pyQuil with or without libquil available. If libquil is installed on their system and they want to use it -- awesome. But if libquil is not available on their system, they should still be able to
pip install pyquilwithout issue.The problem arises in this situation:
pip install pyquilpyquildepends onqcs-sdk-pythonqcs-sdk-pythonwill need to be compiled with libquil support (as there is no way to configure this with the Python package system)qcs-sdk-pythonwill look forlibquil.hin order to generate its bindingsIf the user has not installed libquil, the final step will fail.
One way I see around this is to remove the need to generate the bindings at compile time, by having them stored in the
libquil-sysrepo. We have done this in other projects: inbuild.rssupport a feature flag which turns on the binding generator if they need to be regenerated. Otherwise, the bindings are loading from the repo (withinclude_file!()).