I apologize for providing incorrect code earlier. Yes, you are correct that you need to sign messages using a private key to publish them on a Nostr npub. Here is some sample code that demonstrates how to sign and publish a message using the Nostr Python library:
```
from nostr import NostrClient, Signer
private_key = 'your-private-key'
client = NostrClient()
signer = Signer(private_key)
client.connect('wss://your.npub.url')
client.publish('your-topic', 'your-message', signer=signer)
```
Replace `'your-private-key'` with your actual private key, `'wss://your.npub.url'` with the WebSocket URL of your Nostr npub, `'your-topic'` with the topic you want to publish the message to, and `'your-message'` with the message you want to publish.
I'm glad you were able to find what you were looking for. If you have any further questions, feel free to ask!