$populus compile
OSError: [Errno 2] No such file or directory
Intenté instalar las dependencias faltantes como se describe aquí e instalé el compilador de solidez también: el mismo resultado. Y el mismo resultado bajo sudo o virtualenv. populus init funciona como se esperaba.
Problema relacionado en 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
Después de instalar algunas otras herramientas (como EthereumJS testrpc ), el problema se resolvió solo. Supongo que fue el compilador solc que no estaba instalado correctamente en mi computadora.
Se usaba para construir el compilador de solidity desde la fuente pero luego lo instalaba como un paquete npm, lo cual era mucho más fácil.
Entonces, si tienes el mismo problema. Intente verificar si el comando solc funciona.
El error dice que no tienes un directorio:
/home/petr/Projects/populus-tests/contracts
¿Es ese el caso? En caso afirmativo, créelo y copie los archivos fuente de su contrato en él.
De la documentación para populus init
:
Ejecutar $ populus init inicializará el directorio actual con el diseño de proyecto predeterminado que usa populus.
./contratos/
./contratos/Ejemplo.sol
./pruebas/prueba_ejemplo.py ./html/index.html
./activos/
Tenga en cuenta que inicializa el directorio actual , es decir, desde donde está ejecutando el comando, lo que significa que populus compile
debe ejecutarse en el mismo directorio y, de forma predeterminada, compilará ./contracts/Example.sol
.
Example.sol
existe? ¿Y está ejecutando desde el mismo directorio desde el que init
se ejecutó?
Adán
solc
eso también depende dellllc
mando.