树莓派运行Python3出现的Error总结

1、OSError: [Errno 98] Address already in use
  • 原因:基础错误。程序重复启动了;

  • 方案:检查该文件,杀掉之前已经运行的进程;再次运行该 .py文件即可。

2、TypeError: type NoneType doesn't define __round__ method

——类型错误:round方法无法处理 NoneType类型

  • 原因:基础错误。round()方法可处理数字类型的参数,而不是None/str

  • 方案:1)改参数;2)换方法。

3、TypeError: Can't convert 'int' object to str implicitly

——类型错误:数据类型没有统一,python无法将 int类型的数据当作 str类型的数据处理。

  • 原因:基础错误。我这里是使用了 + 进行字符串拼接,有一边的数据是 int类型。
  • 方案:使用 str()方法可实现其他数据类型与字符串数据类型的转换。
4、TypeError: unorderable types: NoneType() > int()

——类型错误:数据类型没有统一,python无法进行 NoneType类型与 int类型的比较操作(其他编程语言也不行-_-)。

  • 原因:基础错误。大家知道 > 与 < 一般只能用于 int和 float,python也一样,NoneType类型是无法参与 > 与 <
    的操作的。

  • 方案:根据代码报错位置,修改 > 与 < 语句前后的变量。

5、json.decoder.JSONDecodeError: Expecting ':' delimiter: line 1 column 1449 (char 1448)

——json数据格式不对。

  • 原因:基础错误。一般解析数据的时候有问题,有可能是接受的数据不是标准的 json格式;或者其他处理数据的时候没注意,”reading
    the fucking code“就能解决。
  • 方案:根据代码报错位置,参考json标准格式修改即可。
6、SyntaxError: 'gbk' codec can't decode byte 0xad in position 272: illegal multibyte sequence

——python3读入文件时编码格式不对

  • 原因:同事覆盖系统程序文件夹时导致。
  • 方案:指定响应的编码即可。
7、RuntimeWarning: invalid value encountered in double_scalars/RuntimeWarning: invalid value encountered in true_divide

——运行时警告:无效数据

  • 原因:计算过程中部分数据情况没有考虑到,比如:除数不为 0,根号下的数据需要为正数等。
  • 方案:检查相关代码确认,添加容错机制。
8、TypeError: unsupported operand type(s) for &: 'numpy.float64' and 'int'

——&不支持浮点型和整形的按位与操作

  • 原因:基础错误。
  • 方案:可将浮点型转为整形再操作。
9、raise can.CanError("Failed to transmit: %s" % exc) can.CanError: Failed to transmit: [Error 105] No buffer space available

——直接原因为CAN缓存溢出,一般发生在 can发送方法处;

  • 方案:可以先尝试改大缓存,如果仍然报错,需要查找根本原因。
    进入 root账户,在路径 /sys/class/net/can0下执行 echo 4096 > tx_queue_len;我这边再次报错:raise can.CanError(“Transmit buffer full”) can.CanError: Transmit buffer full,需要查找can报错根本原因,再改大缓存也是徒劳。
  • 根本原因,程序参数错误,往总线波特率为 125k的 can总线上发送 250k的数据。改成统一波特率后报错消失。
    ——另外,这里补充一个设置树莓派 can波特率的指令和查询当前 can波特率的指令:
    1)sudo ip link set can0 type can bitrate xxx;;
    2)sudo ip -details link show can0。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过创建一个systemd服务来让一个Python程序在树莓派启动时自动运行,并且一直在终端上运行。下面是具体步骤: 1. 编写Python程序 首先,你需要编写一个Python程序。在程序中,确保在程序的结尾没有调用input()或者类似阻塞程序结束的函数。 例如,这里有一个简单的Python程序示例: ```python #!/usr/bin/env python3 print("Hello World!") ``` 2. 创建systemd服务文件 在树莓派上创建一个systemd服务,可以使你的程序在启动时自动运行。创建一个名为`my_program.service`的文件,将以下内容复制到文件中: ```bash [Unit] Description=My Program [Service] ExecStart=/usr/bin/python3 /path/to/your/program.py WorkingDirectory=/path/to/your/program/directory StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy=multi-user.target ``` 在 `ExecStart` 中指定你的Python程序路径,在 `WorkingDirectory` 中指定程序所在的目录。`StandardOutput` 和 `StandardError` 都设置为 `inherit`,这样服务的输出将会在终端上显示。`Restart` 设置为 `always`,这样当程序异常关闭时,systemd会自动重启程序。`User` 设置为 `pi`,这样服务将以 `pi` 用户的身份运行。 3. 将服务文件复制到systemd目录 将服务文件复制到 `/etc/systemd/system` 目录下: ```bash sudo cp my_program.service /etc/systemd/system/ ``` 4. 重新加载systemd配置 重新加载systemd配置,使得新的服务文件生效: ```bash sudo systemctl daemon-reload ``` 5. 启动服务 启动你的服务并检查运行状态: ```bash sudo systemctl start my_program.service sudo systemctl status my_program.service ``` 如果一切正常,你的程序应该已经在终端上运行了。 6. 设置服务开机自启动 如果你希望你的程序在树莓派启动时自动运行,你需要将服务设置为开机自启动: ```bash sudo systemctl enable my_program.service ``` 现在,每次你启动树莓派,你的程序都会自动运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值