【问题标题】:Python built-in socket package upgradePython内置socket包升级
【发布时间】:2021-02-09 18:06:44
【问题描述】:

我的树莓派上安装了 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-3.x package upgrade j1939


    【解决方案1】:

    问题不在于 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 而不是树莓派: https://github.com/linux-can/can-utils/blob/master/can-j1939-install-kernel-module.md

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 2015-07-31
      • 2021-11-07
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 2017-07-22
      相关资源
      最近更新 更多