Contract-Development

Brownie 無法在 OSX 上安裝 solc

  • June 10, 2020

按照本頁brownie 上的程序:創建新項目並使用 brownie 編譯。遇到以下錯誤,請評論如何解決。

配置和環境。

  1. Python 3.7.7
  2. ganache-cli 6.14.5
(.token-venv) MacBookPro:token nelson$ brownie compile 
 Brownie v1.9.2 - Python development framework for Ethereum
 .....   

 [ 60%] Linking CXX executable solc
 File "brownie/_cli/__main__.py", line 58, in main
   importlib.import_module(f"brownie._cli.{cmd}").main()
 File "brownie/_cli/compile.py", line 37, in main
   project.load()
 File "brownie/project/main.py", line 656, in load
   return Project(name, project_path)
 File "brownie/project/main.py", line 160, in __init__
   self.load()
 File "brownie/project/main.py", line 213, in load
   self._compile(changed, self._compiler_config, False)
 File "brownie/project/main.py", line 96, in _compile
   optimizer=compiler_config["solc"].get("optimizer", None),
 File "brownie/project/compiler/__init__.py", line 97, in compile_and_format
   find_solc_versions(solc_sources, install_needed=True, silent=silent)
 File "brownie/project/compiler/solidity.py", line 158, in find_solc_versions
   install_solc(*to_install)
 File "brownie/project/compiler/solidity.py", line 90, in install_solc
   solcx.install_solc(str(version), show_progress=True)
 File "solcx/install.py", line 229, in install_solc
   _install_solc_osx(version, allow_osx, show_progress, solcx_binary_path)
 File "solcx/install.py", line 374, in _install_solc_osx
   "".format(cmd[0], e.returncode)
OSError: make returned non-zero exit status 2 while attempting to build solc from the source.
This is likely due to a missing or incorrect version of a build dependency.

For suggested installation options: https://github.com/iamdefinitelyahuman/py-solc-x/wiki/Installing-Solidity-on-OSX

問題來自於 Brownie 的依賴項,稱為py-solc-x. 從py-solc-x維基

Solidity 團隊不提供用於 macOS/Darwin 的二進製文件。出於這個原因,py-solc-x嘗試通過從原始碼建構 Solidity 在 OSX 上安裝它。有時,由於一個或多個依賴項的版本不兼容,舊版本的 Solidity 無法建構。

有兩種可能的解決方案:

  1. 建構方式brew
  2. 使用第 3 方預編譯的二進製文件

1. 通過 Homebrew 建構

Brownie 將使用通過以下方式安裝的任何 Solidity 版本brew

brew update
brew upgrade
brew tap ethereum/ethereum
brew install solidity

要安裝最新0.4.x/0.5.x版本的 Solidity,您還可以分別使用 brew installsolidity@4和 brew install solidity@5

要安裝舊版本,您可以直接從 Github 使用 Homebrew 公式:

  1. 找到ethereum/homebrew-ethereum引用您要安裝的版本的送出
  2. 導航儲存庫,直到您擁有該送出的原始文件連結solidity.rb
  3. 使用安裝它brew
brew unlink solidity
# e.g. to install v0.5.6
brew install https://raw.githubusercontent.com/ethereum/homebrew-ethereum/1ecf6c60875740133ee51f6167aef9a4f05986e7/solidity.rb

2. 安裝第三方二進製文件

web3j團隊為許多版本的 Solidity 提供編譯好的 OSX 二進製文件。要使用第三方二進製文件:

  1. 從web3j/solidity-darwin-binaries下載所需的版本
  2. 將文件重命名為solc-v0.x.ywherexy對應於次要和更新檔版本。
  3. 將文件移動到~/.solcx系統上的目錄。它現在可以在 Brownie 中使用。

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