Unable to import Solidity contract from a file using `compile_files`
- Dominant language
- Python
- Stars
- 195
- Forks
- 77
- PR merge metrics
- No merged PRs in 30d
Description
* `py-solc` Version: 2.1.0 (shown when I run `pip3 list`)
* `solc` Version: 0.4.17+commit.bdeb9e52.Linux.g++
* Python Version: 3.6.3
* OS: Docker VM on macOS 10.12.6 - Linux version 4.9.49-moby (gcc version 6.2.1 20160822 (Alpine 6.2.1) )
* Solc v0.4.17 (see where I load Solc dependency in my [Dockerfile](https://github.com/ltfschoen/pyethfinality/blob/master/Dockerfile))
* Source Code: https://github.com/ltfschoen/pyethfinality/blob/master/main.py
### What was wrong?
**How to reproduce the issue**
Follow steps in the "Quickstart Guide" of my Github repo https://github.com/ltfschoen/pyethfinality#chapter-0
* Run the Python script in the 1st Bash Terminal tab's Docker shell
```
python3 main.py
```
**What was the result of the issue. What the expected behaviour is**
In the web3.py Quick Start example code https://github.com/pipermerriam/web3.py, they load the Solidity contract "inline" and store it in variable `contract_source_code` and then compile the source code with `compiled_sol = compile_source(contract_source_code)`, which is then assigned to the `contract_interface = compiled_sol[':Greeter']`.
But I want to load the Solidity contract from a "file", so I added `compile_files` to the list of imports `from solc import install_solc, compile_source, compile_files` and compiled the source code with `compiled_sol = compile_files([“./Greeter.sol”])`, but I get the following error on the above mentioned line of code that assigns to the `contract_interface` variable.
```
Traceback (most recent call last):
File "main.py", line 42, in
contract_interface = compiled_sol[':Greeter']
KeyError: ':Greeter'
```
Note: I need to load the Solidity contract from a file so I can implement unit tests.
#### Cute Animal Picture
[](https://images.pexels.com/photos/36347/cow-pasture-animal-almabtrieb.jpg?w=940&h=650&auto=compress&cs=tinysrgb)
Contributor guide
Assessment
This issue has not been assessed yet.