Ubuntu下运行Brownie部署脚本报ModuleNotFoundError求助
问题描述
在Ubuntu系统中执行brownie run scripts/deploy.py命令部署代码时,出现以下错误:
brownie run scripts/deploy.py Brownie v1.19.2 - Python development framework for Ethereum BrownieSimpleStorageProject is the active project. Launching 'ganache-cli --port 8545 --gasLimit 12000000 --accounts 10 --hardfork istanbul --mnemonic brownie'... File "brownie/_cli/run.py", line 51, in main return_value, frame = run( File "brownie/project/scripts.py", line 60, in run module = _import_from_path(script) File "brownie/project/scripts.py", line 156, in _import_from_path _import_cache[import_str] = importlib.import_module(import_str) File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in File "<frozen, line line, in in ModuleNotFoundError: No module named 'mnt.c.users' Terminating local RPC client...
需要解决该错误并正常运行Brownie,同时明确:Brownie安装后是否无需激活虚拟环境即可使用?并排查安装问题。
解决方案与排查步骤
1. 解决ModuleNotFoundError: No module named 'mnt.c.users'错误
这个错误是因为Brownie将Windows风格的路径(如C:\Users\...)误解析为Python模块名,通常发生在项目位于WSL挂载的Windows分区(如/mnt/c)时,路径结构被当成了模块层级。
解决方法:
- 将项目迁移到Ubuntu本地路径,比如
~/projects/BrownieSimpleStorageProject,避免放在/mnt下的Windows挂载分区 - 若必须使用挂载路径,确保路径全用正斜杠,且避免路径中出现类似
c.users这种会被识别为模块结构的命名 - 检查
deploy.py脚本,确认没有误写Windows路径格式的导入语句
2. Brownie与虚拟环境的使用规则
Brownie是否需要激活虚拟环境分两种情况:
- 全局安装:直接用
pip install eth-brownie安装(不加--user或虚拟环境),无需激活虚拟环境即可使用,但会和系统全局Python包产生冲突,不推荐 - 虚拟环境安装:在venv/conda等虚拟环境中安装后,必须激活对应虚拟环境才能使用Brownie,因为其可执行文件和依赖包都存放在虚拟环境目录内
推荐始终使用虚拟环境安装Brownie,避免依赖版本冲突。
3. 全面排查Brownie安装问题
如果错误持续,按以下步骤逐一排查:
- 验证Brownie安装状态:执行
brownie --version,能正常输出版本号(如v1.19.2)则说明安装成功 - 核对Python环境一致性:执行
which brownie和which python,确认两者路径属于同一环境(虚拟环境下路径应指向虚拟环境的bin目录) - 重新安装Brownie:先卸载
pip uninstall eth-brownie,再在干净的虚拟环境中重新安装pip install eth-brownie - 检查Ganache-cli:执行
ganache-cli --version,若未安装则用npm install -g ganache-cli安装(需先安装Node.js) - 清理Brownie缓存:删除项目目录下的
.brownie文件夹,再重新运行部署命令
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

