0

我的树莓派上安装了 python 3.7.1。我通过以下说明使用 pyenv 升级到 python 3.9.1:

https://yeti.co/blog/setting-up-a-raspberry-pi-with-raspbian-and-pyenv-running-python-35/

现在,我按照命令 python3 -V 运行 python 3.9.1,但是当我运行程序时出现错误,因为内置套接字包似乎没有升级到 3.9.1。我可以看到这一点,因为当我dir(socket)在 python3 中运行时,我缺少 3.9.1 套接字附加组件(名为 J1939)。

升级插座模块的方法是什么?由于它是一个内置包,我无法使用 pip3 对其进行升级。

谢谢你。

4

1 回答 1

0

问题不在于 Python。套接字模块随 python 升级而升级。

问题是在树莓派上默认没有启用内核模块 can-j1939。

我按照说明在这里添加了一个新的内核模块: https ://www.raspberrypi.org/documentation/linux/kernel/building.md#default_configuration

我用 menuconfig 配置内核得到 can-1939

  • 网络支持 - CAN 总线子系统支持 - SAE J1939

然后我构建了内核模块。

我激活了 can-1939 模块。

sudo modprobe can-j1939

最后一步是手动添加头文件:

sudo cp ~/linux/include/uapi/linux/can.h /usr/include/linux/can.h
sudo cp ~/linux/include/uapi/linux/can/j1939.h /usr/include/linux/can/

下面的链接很有用,但它适用于 debian 而不是树莓派: https ://github.com/linux-can/can-utils/blob/master/can-j1939-install-kernel-module.md

于 2021-02-10T22:37:22.570 回答