I have implemented public BIP 32 derivation in a project of mine, you can look at the implementation here:
https://github.com/achow101/HWI/blob/master/hwilib/bip32.py. The function that does the derivation is CKDpub and it takes as arguments: the parent public key as bytes, the parent chaincode as bytes, and the index of the child to derive as an integer.
It will only derive a child key at a particular index. You can derive keys at paths by using a loop to derive the child at each step in the path until you get to the final child.
If all you need is public derivation, then you can use that code. It is provided under the MIT license.