ImportError: невозможно импортировать имя SimpleCollectible из Brownie
Реализация колбы с брауни для автоматизации кода create_collectible при нажатии кнопки. Ссылки:
- https://www.youtube.com/watch?v=sOVxkPvAHjI&t=776s
- https://flask.palletsprojects.com/en/2.0.x/tutorial/views/
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 256, in locate_app
__import__(module_name)
File "/Users/work/Documents/OpenvinoNFT/app/api/api.py", line 2, in <module>
from create_collectible import main, nftcode
File "/Users/work/Documents/OpenvinoNFT/app/api/create_collectible.py", line 4, in <module>
from brownie import SimpleCollectible, account, network, config
ImportError: cannot import name 'SimpleCollectible' from 'brownie' (/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/brownie/__init__.py)
Traceback (most recent call last)
File "/Users/work/Documents/OpenvinoNFT/app/api/api.py", line 2, in <module>
from create_collectible import main, nftcode
File "/Users/work/Documents/OpenvinoNFT/app/api/create_collectible.py", line 4, in <module>
from brownie import SimpleCollectible, account, network, config
During handling of the above exception, another exception occurred:
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 359, in __call__
rv = self._load_unlocked()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 346, in _load_unlocked
self._app = rv = self.loader()
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 402, in load_app
app = locate_app(self, import_name, name)
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 261, in locate_app
raise NoAppException(
flask.cli.NoAppException: While importing 'api', an ImportError was raised:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/flask/cli.py", line 256, in locate_app
__import__(module_name)
File "/Users/work/Documents/OpenvinoNFT/app/api/api.py", line 2, in <module>
from create_collectible import main, nftcode
File "/Users/work/Documents/OpenvinoNFT/app/api/create_collectible.py", line 4, in <module>
from brownie import SimpleCollectible, account, network, config
ImportError: cannot import name 'SimpleCollectible' from 'brownie' (/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/brownie/__init__.py)
5 ответов
Мне удалось решить эту проблему, выполнив следующее:
В моем приложении фляги я добавил:
os.system("brownie run scripts/simple_collectible/create_collectible.py --network rinkeby")
под моим @app.route на фляге.
Проблема заключалась в том, что код выполнялся в интерфейсе командной строки python, а не в интерфейсе командной строки Brownie, как предполагалось.
Возможно, это не лучший способ сделать это, но он работает. Спасибо
Измените написание на «SimpleCollectable» и установите «brownie pm install OpenZeppelin/openzeppelin-contracts@3.0.0 ».
Проверьте документацию, вы узнаете, какой импорт доступен.
SimpleCollectible
действительно нет в базовом модуле
https://eth-brownie.readthedocs.io/en/stable/api-brownie.html#brownie
Удалить файл
SimpleCollectible.sol
(Я имел ввиду не код, я имел ввиду файл).
Затем заново создайте его, добавив в него соответствующий код.
Объяснение ошибки, которую вы получаете, заключается в том, что если вы запускаете скрипт, используя код vs напрямую, контракты не видны домовым, вместо этого вы должны запустить его из терминала, используя команду «brownie run create_collectible».