The best freely available python library is the Paho Python client.

It can be installed using:

            pip install paho-mqtt
        

Simple example code could then look like:

            
                import paho.mqtt.client as mqtt

                # Define event callbacks

                def on_connect(client, userdata, rc):
                    if rc == 0:
                         print("Connected successfully.")
                    else:
                         print("Connection failed. rc= "+str(rc))

                def on_publish(client, userdata, mid):
                    print("Message "+str(mid)+" published.")

                def on_subscribe(client, userdata, mid, granted_qos):
                    print("Subscribe with mid "+str(mid)+" received.")

                def on_message(client, userdata, msg):
                    print("Message received on topic "+msg.topic+" with QoS "+str(msg.qos)+" and payload "+msg.payload)

                mqttclient = mqtt.Client()

                # Assign event callbacks
                mqttclient.on_connect = on_connect
                mqttclient.on_publish = on_publish
                mqttclient.on_subscribe = on_subscribe
                mqttclient.on_message = on_message

                # Connect
                mqttclient.username_pw_set(yourUserName, yourPassword)
                mqttclient.connect(hostname, port)

                # Start subscription
                mqttclient.subscribe(yourRootTopic)

                # Publish a message
                mqttclient.publish(yourRootTopic, "Hello World Message!")

                # Loop; exit on error
                rc = 0
                while rc == 0:
                rc = client.loop()
                print("rc: " + str(rc))