Is it possible to distribute only the bytecode version (.pyc file) of a Python script instead of the original .py file? My app embeds the Python interpreter and calls PyImport_Import to load a script. How can I tell it to look for a .pyc file and import that?
Since you are writing your main program in C++, you can do whatever you want to protect your Python files.  You could encrypt them for distribution, then decrypt them just in time to import them into the Python interpreter, for example.
Since you are using PyImport_Import, you can write your own __import__ hook to import the modules not from a file but from a memory buffer, so your transformation to .pyc file can happen all in memory, with no understandable Python code on disk at all.
How to protect Python source code?