Question: I'm trying to get this Open Quantum Safe example working: https://github.com/open-quantum-safe/liboqs-python/blob/main/examples/kem.py I'm getting this error: (myenv) user@mx:~ $ python3 '/home/user/Documents/Dev/quantum_algo_tests/# Key encapsulation Python example.py' Enabled KEM mechanisms: Traceback (most recent call last): File "/home/user/Documents/Dev/quantum_algo_tests/# Key encapsulation Python example.py", line 9, in <module> kems = oqs.get_enabled_kem_mechanisms() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'oqs' has no attribute 'get_enabled_kem_mechanisms' (myenv) user@mx:~ $  Running inspect to list functions I get: ExpressionInput FunctionNode OQSInterpreter oqs_engine  I tried a basic example from following the documentation: import oqs from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os import base64 # Message to be encrypted message = "Hello world!" # Step 1: Key Encapsulation using Kyber kemalg = "Kyber512" with oqs.KeyEncapsulation(kemalg) as client: # Client generates keypair public_key = client.generate_keypair() # Server (could be another party) encapsulates secret with client's public key with oqs.KeyEncapsulation(kemalg) as server: ciphertext, shared_secret_server = server.encap_secret(public_key) # Client decapsulates to get the same shared secret shared_secret_client = client.decap_secret(ciphertext) # The shared secret is now the same for both client and server and will be used as the encryption key assert shared_secret_client == shared_secret_server, "Shared secrets do not match!" # Step 2: Encrypt the message using AES-GCM with the shared secret iv = os.urandom(12) cipher = Cipher(algorithms.AES(shared_secret_client), modes.GCM(iv), backend=None) encryptor = cipher.encryptor() ciphertext = encryptor.update(message.encode()) + encryptor.finalize() # The tag ensures the integrity of the message tag = encryptor.tag # Combine the IV, ciphertext, and tag into a single encrypted package encrypted_message = base64.b64encode(iv + ciphertext + tag) print(f"Encrypted message: {encrypted_message.decode()}") # Step 3: Decryption process (using the shared secret derived from Kyber) # Decrypt the message decryptor = Cipher(algorithms.AES(shared_secret_server), modes.GCM(iv, tag), backend=None).decryptor() decrypted_message = decryptor.update(ciphertext) + decryptor.finalize() print(f"Decrypted message: {decrypted_message.decode()}")  I get the same error: $ python3 /home/user/Documents/Dev/quantum_algo_tests/hello_world_example.py Traceback (most recent call last): File "/home/user/Documents/Dev/quantum_algo_tests/hello_world_example.py", line 11, in <module> with oqs.KeyEncapsulation(kemalg) as client: ^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'oqs' has no attribute 'KeyEncapsulation'  Why is such a simple program throwing this error?

Answer: Chances are, liboqs just wasn't installed correctly. The GitHub page gives several installation steps, some of which are contradictory and could break your install. (When I tried following the instructions from top to bottom, I got a version conflict due to incompatible installs of oqs and liboqs-python.) The safest option is to exclusively follow the "Let liboqs-python install liboqs automatically" section and ignore everything preceding and following it. Just activate your desired venv, then paste the following lines into your terminal: git clone --depth=1 https://github.com/open-quantum-safe/liboqs-python cd liboqs-python pip install .