Solidity

solc-x 版本出現問題“尚未安裝 solc 0.6.0”

  • November 22, 2021

我正在嘗試列印出變數 ( compiled_sol),正如您將在下面名為 python 文件的程式碼中看到的那樣,deploy.py我可以部署我的智能合約,但我一直在執行這個錯誤

*****INFO: Could not find files for the given pattern(s).
Traceback (most recent call last):
 File "C:\Users\houde\Desktop\Blockchain\solidity_projects\web3_py_simple_storage\deploy.py", line 8, in <module> 
   compiled_sol = compile_standard(
 File "C:\Users\houde\AppData\Roaming\Python\Python39\site-packages\solcx\main.py", line 368, in compile_standard 
   solc_binary = get_executable(solc_version)
 File "C:\Users\houde\AppData\Roaming\Python\Python39\site-packages\solcx\install.py", line 194, in get_executable
   raise SolcNotInstalled(
solcx.exceptions.SolcNotInstalled: solc 0.6.0 has not been installed. Use solcx.install_solc('0.6.0') to install. ******

我確實solc-x通過這個命令安裝了,*pip install py-solc-x*所以我可以編譯契約,但我不知道如何升級版本或在這種情況下該怎麼做,我會把程式碼留在下面,非常感謝你們。

from solcx import compile_standard

with open("SimpleStorage.sol", "r") as file:
   simple_storage_file = file.read()


compiled_sol = compile_standard(
   {
       "language": "solidity",
       "sources": {"simpleStorage.sol": {"content": simple_storage_file}},
       "settings": {
           "outputSelection": {
               "*": {"*": ["abi", "metadata", "evm.bytecode", "evm.sourceMap"]}
           }
       },
   },
   solc_version="0.6.0",
)

print("compiled_sol")

注意:“我在契約中使用的 solc 版本 0.6.0”

我正在學習同一門課程,檢查一下,它將向您展示如何在此處修復此錯誤:https ://github.com/smartcontractkit/full-blockchain-solidity-course-py/blob/main/chronological-issues -來自-video.md

您只需要執行以下操作:

from solcx import compile_standard

我們需要將其更改為這一行:

from solcx import compile_standard, install_solc

然後,我們需要在執行compile_standard程式碼之前添加一行:

install_solc("0.6.0")

或者,您可以在安裝 solcx 之前先安裝Solc,它會為您提供舊版本的 Solidity 編譯器。所以你所要做的就是從 solcx 導入。

我也在你的設置數組中註意到:

"*": {"*": {"abi", "metadata", "evm.bytecode", "evm.sourceMap"}}

您使用了大括號而不是方括號,因此您需要在嘗試編譯之前修復它。它需要看起來像這樣

"*": {"*": ["abi", "metadata", "evm.bytecode", "evm.sourceMap"]}

引用自:https://ethereum.stackexchange.com/questions/110405