populus OSError: [Errno 2] No existe tal archivo o directorio

Al intentar:

$populus compile

Obtener:

OSError: [Errno 2] No such file or directory

Intentó:

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.

Salida de consola completa:

============ 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

Respuestas (3)

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.

Acabo de tener el mismo problema. Aparte de solceso también depende del lllcmando.

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.

No, el directorio está ahí. Fue creado por el comando populus init.

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 compiledebe ejecutarse en el mismo directorio y, de forma predeterminada, compilará ./contracts/Example.sol.

Sí, lo comprobé. Estoy usando la ubicación correcta. Hay algo diferente.
Definitivamente Example.solexiste? ¿Y está ejecutando desde el mismo directorio desde el que initse ejecutó?
Por supuesto. Por favor, vea el primer enlace en la pregunta. La segunda línea dice que el problema puede ocurrir cuando el compilador solc no está instalado. Pero lo instalé.