Compiling contracts 
To compile a SmartPy contract, make sure that SmartPy is installed as described in Installation. Then, run the command python path/to/contract.py, where path/to/contract.py is the path to your contract.
When you compile the contract, SmartPy automatically runs the tests in the contract and generates output files. If the contract compiles successfully and the tests pass, no messages appear in the terminal output.
Output files 
When you compile a SmartPy contract locally with the python command, SmartPy writes output files to the folder that you specify when you create the test scenario. For example, if you create the test scenario with the code scenario = sp.test_scenario("My test", main), SmartPy writes output files to the My_test folder, relative to the location of the test scenario file.
SmartPy compiles each contract, each contract's initial storage, and the parameters for each smart contract call to multiple output files. The compiled file names start with step_[nnn], where [nnn] is the number of the step in the test scenario that instantiated the contract. The log.txt file lists when each file is created so you can match files to commands in your test scenario.
- Output log: The - log.txtfile includes messages from the compiler, the names of other compiled files as they are created, and messages that you add as described in Logging.
- Compiled contract files: SmartPy compiles each contract that you instantiate and add to the test scenario to a Michelson in files that end in - _contract.tzand Micheline JSON in files that end in- _contract.json.- SmartPy gives each contract in the test scenario an ID number in the order that they are instantiated in the code, starting with 0. The first contract is compiled to a file that ends in - _cont_0_contract.tz. Other output files that are associated with this contract have the same ID number, such as- step_001_cont_0_storage.tzfor its initial storage value and- step_007_cont_0_params.tzfor the parameters sent to that contract in a call.
- Compiled initial storage files: SmartPy compiles the initial storage value of each contract to Python, Micheline JSON, and Michelson files that end in - _storage.py,- _storage.json, and- _storage.tz. You can use the contents of these files to set the initial storage of the contract when you deploy it.
- Parameter files: SmartPy compiles the parameters from each smart contract call in the test scenario to Python, Micheline JSON, and Michelson files that end in - _params.py,- _params.json, and- _params.tz. You can use the contents of these files as examples of how to format parameters for smart contract calls after you deploy the contract.
- Module imports (Internal use): If you set the - SMARTPY_DEPENDENCIES_FILEenvironment variable to a file name, the compiler outputs the tree of module imports that occur during simulation. It writes the information in- Makefileformat, as in this example:bash- $ SMARTPY_DEPENDENCIES_FILE=imports.mk python wheels/smartpy-tezos/smartpy_examples/calculator_new.py- In this case, the compiler creates a file named - imports.mkwith the following contents:make- wheels/smartpy-tezos/smartpy_examples/example_import.spy: wheels/smartpy-tezos/smartpy/math.spy wheels/smartpy-tezos/smartpy_examples/calculator_main.spy: wheels/smartpy-tezos/smartpy/math.spy wheels/smartpy-tezos/smartpy_examples/example_import.spy: wheels/smartpy-tezos/smartpy/utils.spy wheels/smartpy-tezos/smartpy_examples/calculator_new.py: wheels/smartpy-tezos/smartpy_examples/calculator_main.spy