$populus compile
OSError: [Errno 2] No such file or directory
Пытался установить отсутствующие зависимости, как описано здесь, а также установил компилятор солидности - тот же результат. И тот же результат под sudo или virtualenv. populus init работает как положено.
Связанная проблема на GitHub.
============ Compiling ==============
> Loading contracts from: /home/petr/Projects/populus-tests/contracts
Traceback (most recent call last):
File "/usr/local/bin/populus", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 716, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 534, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/populus/cli/compile_cmd.py", line 46, in compile_contracts
result = compile_and_write_contracts(project_dir, *filters, optimize=optimize)
File "/usr/local/lib/python2.7/dist-packages/populus/compilation.py", line 161, in compile_and_write_contracts
**compiler_kwargs
File "/usr/local/lib/python2.7/dist-packages/populus/compilation.py", line 94, in compile_project_contracts
**compiler_kwargs
File "/usr/local/lib/python2.7/dist-packages/populus/compilation.py", line 81, in compile_source_file
**compiler_kwargs
File "/usr/local/lib/python2.7/dist-packages/populus/solidity.py", line 52, in solc
stderr=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
После установки некоторых других инструментов (например, EthereumJS testrpc ) проблема решилась сама собой. Я предполагаю, что это был компилятор solc, который не был правильно установлен на моем компьютере.
Использовался для сборки компилятора Solidity из исходников, но затем устанавливался как пакет npm, что было намного проще.
Итак, если у вас такая же проблема. Попробуйте проверить, работает ли команда solc .
Ошибка говорит о том, что у вас нет каталога:
/home/petr/Projects/populus-tests/contracts
Так ли это? Если да, создайте его и скопируйте в него исходные файлы контракта.
Из документации для populus init
:
Запуск $ populus init инициализирует текущий каталог макетом проекта по умолчанию, который использует populus.
./contracts/
./contracts/Example.sol
./tests/test_examply.py ./html/index.html
./assets/
Обратите внимание, что он инициализирует текущий каталог, то есть из того места, где вы запускаете команду, а это означает, что populus compile
она должна выполняться в том же каталоге и по умолчанию будет компилироваться ./contracts/Example.sol
.
Example.sol
существует? И вы запускаете из того же каталога, init
из которого запускались?
Адам
solc
того, это также зависит отlllc
команды.