esp官方文档:快速入门

https://docs.espressif.com/projects/esp-idf/zh_CN/stable/get-started/

按常理来说应该不会出现什么问题啊,但是确实出现了大问题。

截图如下:

更换了linux下按照官方文档运行也是出现出现了类似的问题

所以,问题到底出在哪里?

根据报错,我们可以定位subprocess.py这个自带库中的CalledProcessError()这个方法

def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute. The arguments are the same as for the Popen constructor. Example: check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
raise CalledProcessError(retcode, cmd)
return 0

这句话中我们清楚的看到,函数引发了一个CalledProcessEroor异常,而异常引发的原因正是无法正常结束命令的调用

我们现在回到引发异常的关键文件idf_tools.py看看他是怎么调用这个函数的

def action_install_python_env(args):
idf_python_env_path, _, virtualenv_python = get_python_env_path() is_virtualenv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)
if is_virtualenv and (not os.path.exists(idf_python_env_path) or args.reinstall):
fatal('This script was called from a virtual environment, can not create a virtual environment again')
raise SystemExit(1) if args.reinstall and os.path.exists(idf_python_env_path):
warn('Removing the existing Python environment in {}'.format(idf_python_env_path))
shutil.rmtree(idf_python_env_path) if not os.path.exists(virtualenv_python):
info('Creating a new Python environment in {}'.format(idf_python_env_path)) try:
import virtualenv # noqa: F401
except ImportError:
info('Installing virtualenv')
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--user', 'virtualenv'],
stdout=sys.stdout, stderr=sys.stderr) subprocess.check_call([sys.executable, '-m', 'virtualenv', idf_python_env_path],
stdout=sys.stdout, stderr=sys.stderr)
run_args = [virtualenv_python, '-m', 'pip', 'install', '--no-warn-script-location']
requirements_txt = os.path.join(global_idf_path, 'requirements.txt')
run_args += ['-r', requirements_txt]
if args.extra_wheels_dir:
run_args += ['--find-links', args.extra_wheels_dir]
info('Installing Python packages from {}'.format(requirements_txt))
subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr)

定位到最后一句代码:

    subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr)

引发了异常

这里run_args是输入一串执行参数命令,对应的,就是我们平时在命令行里面输入的东西,现在python帮你完成,具体调用了什么命令行参数?

我们来看看报错信息

Traceback (most recent call last):
File "/home/ssss/桌面/esp-idf/tools/idf_tools.py", line 1492, in <module>
main(sys.argv[1:])
File "/home/ssss/桌面/esp-idf/tools/idf_tools.py", line 1488, in main
action_func(args)
File "/home/ssss/桌面/esp-idf/tools/idf_tools.py", line 1215, in action_install_python_env
subprocess.check_call(run_args, stdout=sys.stdout, stderr=sys.stderr)
File "/usr/lib/python2.7/subprocess.py", line 190, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/root/.espressif/python_env/idf4.3_py2.7_env/bin/python', '-m', 'pip', 'install', '--no-warn-script-location', '-r', '/home/mastwet/\xe6\xa1\x8c\xe9\x9d\xa2/esp-idf/requirements.txt']' returned non-zero exit status 2

我们可以看到,

/home/ssss/桌面/esp-idf/tools/requirements.txt

被解析成了

'/home/mastwet/\xe6\xa1\x8c\xe9\x9d\xa2/esp-idf/requirements.txt'

所以说结论,原因是不能够将文件安放在带有中文路径的目录下!

还没结束!我发现其实windows下的报错和linux下的报错还是有区别

最后发现导致安装不上的竟然是网络问题!

最后解决方法还是老生常谈的pip换元大法

全局更新pip环境,具体可参照这篇文章

https://blog.csdn.net/yuzaipiaofei/article/details/80891108

记一次安装ESP32开发环境:ESP-IDF安装配置的排坑之旅的更多相关文章

  1. Flutter开发环境(Window)配置及踩坑记录

    Flutter 是 Google 用以帮助开发者在 iOS 和 Android 两个平台开发高质量原生 UI 的移动 SDK.Flutter 兼容现有的代码,免费且开源,在全球开发者中广泛被使用. F ...

  2. 安装MinGW-C++开发环境2--软件安装

    下面以MinGW安装路径为C:\Local\MinGW64为例说明安装过程: 1.解压x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z到C:\Local\Min ...

  3. 安装ruby开发环境

    如何快速正确的安装 Ruby, Rails 运行环境 对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 ...

  4. Fedora15下安装Android开发环境

    Fedora15下安装Android开发环境需要以下步骤: 完整步骤. 1. 安装正确版本的JDK. 2. 安装Eclipse. 3.  安装ADT. 4.  安装Android SDK. 5.  安 ...

  5. 基于windows环境VsCode的ESP32开发环境搭建

    1. 基于windows环境VsCode的ESP32开发环境搭建,网上有各类教程,但是我实测却不行. 例如我在vscode内安装的乐鑫插件,扩展配置项是下图这样: 而百度的各类博文却都是这样: 经过网 ...

  6. Linux安装LAMP开发环境及配置文件管理

    Linux主要分为两大系发行版,分别是RedHat和Debian,lamp环境的安装和配置也会有所不同,所以分别以CentOS 7.1和Ubuntu 14.04做为主机(L) Linux下安装软件,最 ...

  7. win使用MSYS2安装Qt开发环境

    原文链接 MSYS2 下载地址: pacman的具体用法 有pacman的具体使用方法.我们首先对系统升级 我们首先对系统升级 pacman -Syu 就会检测整个系统可以升级的组件,并自动下载安装, ...

  8. Appium移动自动化测试(二)--安装Android开发环境

    继续Appium环境的搭建. 第二节  安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试 ...

  9. Appium移动自动化测试(二)--安装Android开发环境(转)

    Appium移动自动化测试(二)--安装Android开发环境 2015-06-04 17:30 by 虫师, 35299 阅读, 23 评论, 收藏, 编辑 继续Appium环境的搭建. 第二节   ...

  10. SharePoint 2013 配置开发环境,需安装VS2012插件

    原文:SharePoint 2013 配置开发环境,需安装VS2012插件 SharePoint 2013已经安装好了,接下来就是配置开发环境,安装VS2012,但是,装好了以后,发现没有ShareP ...

随机推荐

  1. Top 出海 AI 公司招技术!HIX.AI & Pollo.ai | 深圳

    HIX.AI & Pollo.ai 招聘高级海外 AI 产品经理 (25-45K) 岗位职责: 负责Web 端海外 AI 产品的规划与策划,负责产品需求分析及原型设计,并制定方案推动产品研发落 ...

  2. 操作系统educative版本-笔记1

    Qustions How can we summarize a Process? At any instant in time, we can summarize a process by takin ...

  3. 在Java集合框架中,`Set`接口是一个重要的接口,它表示一个不包含重复元素的集合。常见的`Set`实现类有`HashSet`、`LinkedHashSet`和`TreeSet`。下面是关于`Set`接口的一些基本用法和方法介绍:

    常用实现类 HashSet: 基于哈希表实现,元素无序. 插入.删除.查找操作的时间复杂度为O(1). LinkedHashSet: 继承自HashSet,并使用双向链表来维护元素的插入顺序. 保留元 ...

  4. Oracle chr() ascii()

    函数简介 实用函数 chr() 和 ascii() chr() 函数将ASCII码转换为字符: ASCII码 –> 字符: ascii() 函数将字符转换为ASCII码: 字符 –> AS ...

  5. FireDAC开发DataSnap应用系统【3】-使用TFDJSONDatasets的CRUD功能

    类别 说明 TFDJSONDeltas 包含异动的delta的类别.客户端存放deltade对象 TFDJSONDeltasWriter 把deltas写入TFDJSONDeltas TFDJSOND ...

  6. Linux操作系统(中)

    上一篇分享了一些Linux操作系统最基本的一些命令和基础知识,下面,要分享的还是Linux操作系统的一些内容,因为在做网安这方面,Linux会经常用到而且也很重要,好了,废话不多说,要开始了. 在Li ...

  7. TypeScript+Vue3

    TypeScript Any 类型 和 unknown 顶级类型 1.没有强制限定哪种类型,随时切换类型都可以 我们可以对 any 进行任何操作,不需要检查类型 2.声明变量的时候没有指定任意类型默认 ...

  8. [随记]-SpringMVC中的handler到底是什么东西

    HandlerMapping 初始化时候的 HandlerMapping 有,按顺序排列: requestMappingHandlerMapping beanNameHandlerMapping -& ...

  9. Notepad++之"常用技术"

    一.^ 前面 数据准备 二.$ 后面 准备 结果

  10. 运筹学之"名词解释"

    1.转移概率 转移概率是指某个销售者保持,获得或失去消费者的概率 2.阶石法中的改进指数 阶石法中的改进指数是指循着改进路线,当货物的运输量作为一个单位发生变化时,会引起总运输费用的改变 3.相关关系 ...