Contract-Development
Brownie 無法在 OSX 上安裝 solc
按照本頁brownie 上的程序:創建新項目並使用 brownie 編譯。遇到以下錯誤,請評論如何解決。
配置和環境。
- Python 3.7.7
- 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 無法建構。有兩種可能的解決方案:
- 建構方式
brew
- 使用第 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 installsolidity@5
。要安裝舊版本,您可以直接從 Github 使用 Homebrew 公式:
- 找到
ethereum/homebrew-ethereum
引用您要安裝的版本的送出- 導航儲存庫,直到您擁有該送出的原始文件連結
solidity.rb
。- 使用安裝它
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 二進製文件。要使用第三方二進製文件:
- 從web3j/solidity-darwin-binaries下載所需的版本
- 將文件重命名為
solc-v0.x.y
wherex
並y
對應於次要和更新檔版本。- 將文件移動到
~/.solcx
系統上的目錄。它現在可以在 Brownie 中使用。