Как я могу скомпилировать файлы солидности, которые выполняют относительный импорт через py-solc
? Вот минимальный пример:
Структура каталогов
my-project
- main.py
- bar.sol
- baz.sol
main.py:
from solc import compile_source
def get_contract_source(file_name):
with open(file_name) as f:
return f.read()
contract_source_code = get_contract_source("bar.sol")
compiled_sol = compile_source(contract_source_code) # Compiled source code
baz.sol:
pragma solidity ^0.4.0;
contract baz {
function baz(){
}
}
bar.sol:
pragma solidity ^0.4.0;
import "./baz" as baz;
contract bar {
function bar(){
}
}
Когда я пытаюсь запустить файл python, я получаю следующую ошибку:
solc.exceptions.SolcError: An error occurred during execution
> command: `solc --combined-json abi,asm,ast,bin,bin-runtime,clone-bin,devdoc,interface,opcodes,userdoc`
> return code: `1`
> stderr:
> stdout:
:17:1: Error: Source "baz" not found: File outside of allowed directories.
import "./baz" as baz;
^----------------------^
Мне все еще не ясно, как работает импорт. Я просмотрел документы , и мне кажется, что мне нужно передать дополнительные аргументы команде compile_source
. Я нашел здесь несколько потенциально полезных документов и думаю, что мне нужно поиграться с allow_paths
или compile_files
, что я и сделаю. Если я найду решение до того, как получу ответ, я опубликую то, что найду.