微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python内置socket包升级

如何解决Python内置socket包升级

我的树莓派上安装了 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。我可以看到这一点,因为当我在 python3 中运行 dir(socket) 时,我缺少 3.9.1 套接字附加组件(名为 J1939)。

socket模块升级方法是什么?由于它是一个内置包,我无法使用 pip3 升级它。

谢谢。

解决方法

问题不在于 Python。 socket模块随着python升级而升级。

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

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

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

  • 网络支持 - 可以总线子系统支持 - 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 而不是 raspberry pi: https://github.com/linux-can/can-utils/blob/master/can-j1939-install-kernel-module.md

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。