在 eth-brownie 中使用外部包?

Use external packages in eth-brownie?

我正在尝试在 VSCode 上在 Brownie 中打开一个 ERC721 智能合约并循环遍历代币 ID 并在每次迭代中设置每个代币的 URI。我用 brownie run scripts/parcel_asset/testpyodbc.py 执行脚本。我正在尝试使用名为 pyodbc 的 ODBC 驱动程序来查询 Access 数据库并创建游标以进行迭代。当 运行 只是一个 python 脚本但 Brownie 给出错误 ModuleNotFoundError: No module named 'pyodbc' 时它工作正常。有没有办法用他的 odbc 和布朗尼?

下面是我得到的错误

\nft> brownie run scripts/parcel_asset/testpyodbc.py
Brownie v1.17.2 - Python development framework for Ethereum
File ".\scripts\parcel_asset\testpyodbc.py", line 1, in <module>
import pyodbc
ModuleNotFoundError: No module named 'pyodbc'
Terminating local RPC client...
PS C:\Users\philk\Dropbox\smartCity\nft\OrlandoMagicOrange\nft> brownie run scripts/parcel_asset/testpyodbc.py
INFO: Could not find files for the given pattern(s).
Brownie v1.17.2 - Python development framework for Ethereum

NftProject is the active project.
import pyodbc
ModuleNotFoundError: No module named 'pyodbc'
Terminating local RPC client...

我在 Discord 频道上找到了这个: brownie 安装到它自己的虚拟环境中,如果你想让其他包工作,你必须将它们“注入”到 brownie virtualenv 中:When using brownie I can't use external modules, pip install doesn't work brownie 但完全公开,我尝试了我正在使用的另一个包,但无济于事。

pipx inject eth-brownie pyodbc 

这解决了问题

如果您使用 pipx 安装了 brownie,您将需要 inject 外部包到您的项目中。

所以不用

pip install matplotlib

会是

pipx inject eth-brownie matplotlib

pipx 将软件包安装到一个孤立的虚拟环境中,因此您必须将其安装到 brownie 虚拟环境中才能使用其他软件包。

Related from Stack Exchange Ethereum