Python is not a compiled language. It is interpreted at the time of execution. It is important to remember that, when you follow the steps in this chapter, you are not pickling an executable program. You are simply pickling an object. At load time, the environment must be compatible with the contents of the object. Often, that means matching versions, as libraries change over time. Also, the default serialization protocol for pickle is not compatible with Python 2, so you will have to change the protocol if switching Python versions.
Lastly, the pickled object is similar to a ZIP file in that anyone can bundle up anything inside it and you will not know it until you unpickle/unzip it. Security should always be a concern with any file types that are not transparent.