This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3220SF-LAUNCHXL:UniFlash#39;s SLImageCreator 未能启动:PyInstaller 抱怨 ImportError:没有名为_struct 的模块

Guru**** 2576195 points
Other Parts Discussed in Thread: UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/871783/cc3220sf-launchxl-uniflash-s-slimagecreator-fails-to-start-pyinstaller-complains-importerror-no-module-named-_struct

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:UNIFLASH

大家好、就像 、我发现 UniFlash 的一部分 SLImageCreator 无法在安装了全功能 Python2和 Python3的 Arch Linux 系统上运行。 将默认 Python 从3更改为2没有帮助。 该误差类似于 Kiril 的误差。

MOD 为 NULL - structTraceTM (最近一次调用的最后一次):
文件"/usr/lib/python2.7/struct.py、第1行、在中 
从_struct import *
ImportError:没有名为_struct
mod 的模块为 NULL - pyimod02_archiveTracback (最近一次调用最后一次):
文件"/home/user/Downloads/sl_image_creator_gen3/venv_ic/lib/python2.7/site-packages/PyInstaller/loader/pyimod02_archive.py、第28行、位于中 
ImportError:没有名为 struct
mod 的模块为 NULL - pyimod03_importersTracback (最近一次调用最后一次):
文件"/home/user/Downloads/sl_image_creator_gen3/venv_ic/lib/python2.7/site-packages/PyInstaller/loader/pyimod03_importers.py、第24行、位于中 
ImportError:No module named pyimod02_archive
traceback (最近一次调用最后一次):
file " "、第15行、输入 
导入错误:没有名为 pyimod03_imiliber_pyiboot01_bootstrap 的模块
返回-1

我认为封装必须做出不正确的假设。 考虑到几年后的情况、这里是否有人知道原因?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、TI 是否知道 Python 2在202020-01-01年已达到其生命周期结束? 它不会获得进一步的支持:错误报告、修复等。pyfound.blogspot.com/.../python-2-sunset.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    您是否在命令行中或 仅在 GUI 中看到此问题? 您使用的是哪个版本的 UniFlash?

    此致、

    Sarah

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sarah、

    我刚才下载并安装了 uniflash_sl.5.2.0.2519.run UniFlash GUI 运行正常、但正确自动检测器件后启动只会在无反馈的情况下永久启动。 调试它时、我发现 ti/uniflash_5.2.0/simplelink/imagecreator/bin/SLImageCreator 正在运行、因此我现在直接从 bash shell 运行它。

    我已经详细介绍了正在发生的情况。

    'sltrace -Fe %desc'显示 ti/uniflash_5.2.0/simplelink/imagecreator/bin/libpython2.7.SO.1.0正在打开。 这是一个指向系统/usr/lib/libpython2.7.so.1.0的符号链接、然后系统将读取该符号。 然后、它尝试从同一 ti/.../bin 目录中打开_struct.so、_structmodule.so、_struct.py 或_struct.pyc 中的一个。 不存在任何错误、并导致错误结果。

    在 Arch Linux 上、有/usr/lib/python2.7/lib-dynload/_struct.so 并运行«strace -Fe %desc python2 -c 'import struct'»显示了正在提取的内容。 我也会尝试将其符号链接到 ti/.../bin。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sarah、

    不、每次我在/usr/lib/python2.7/lib-dynload 中添加另一个 symlink 时、这种情况会变得更进一步、例如 binascii.so、operator.so、_io.so、但这些投诉会变干、我会解决进一步的问题、最终会放弃

    回溯(最近一次调用最后一次):
    文件"./SLImageCreator"、第45行、在中 
    从 slimageconfigCreator 导入 SLImageConfigCreator 中的 RECONFIG_PROJECT
    文件"/home/user/Downloads/sl_image_creator_gen3/slimageconfigcreator.py、第26行、在中 
    文件"/home/user/Downloads/sl_image_creator_gen3/slimagecreatorglobals.py、第240行、在中 
    导入错误:无法导入名称 SlFileListProperties
    

    在我看来、TI 似乎使用 PyInstaller 将他们的 Python SLImageCreator 捆绑到单个可执行文件中、并提供它所需的大量资源、但它们不包含*所有内容*、并对 Linux 平台如何与其构建环境相匹配进行了过多的假设。 Google 的结果表明、Arch Linux 并不是单独拥有正确构建和运行的 Python 2、而是与 SLImageCreator 不运行的 TI Linux 足够不同、例如某些版本的 Debian 也会受到影响。

    TI 能否捆绑运行 SLIC 所需的*所有内容*,以便/usr/lib/python2.7等不被使用?

    (此外、鉴于 TI 正在销售芯片、而不是 UniFlash、除了这些捆绑的可执行文件外、将 UniFlash 作为源代码发布似乎对所有人都有利。 熟练的用户可以诊断问题、而不是在 TI 没有用户系统的情况下占用 TI 的时间来解决便携性问题。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我得出的结论是、虽然 Arch Linux 和其他发行版提供了一个相当不变的香草 Python 2.7、但人们可以从自己的源代码中构建、Debian、因此 Ubuntu 在构建 Python 之前改变了 Python 版本。 特别是、作为他们支持同时安装多个相关架构库的"多架构"愿望的一部分、他们无情地粘附/usr/lib/python2.7/lib-dynload.的内容

    PyInstaller 将系统的 Python 解释器嵌入到 bin 中、而不是系统的库中。 但是、似乎对其位置进行了嵌入式假设、因此生成的 SLImageCreator bin 不会在不满足要求的地方运行。 可以将 PyInstaller 定向到在更多位置搜索。

    或沟渠安装程序、改为改用 Flatpak 或 Snappy。 它们独立于 Python、并嵌入了运行所交付程序所需的更多内容。https://flatpak.org/ 是独立的。en.wikipedia.org/.../Snappy_(package_manager) 是 Canonical 的。 可能需要通过迁移至非 EOL Python 3来完成一些操作。 :-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如上所述、默认情况下、在随 Debian /Ubuntu 一起提供的 Python 上添加了大量其他库。

    由于受欢迎、Ubuntu 是我们支持的发行版、其中的测试已完全完成-很难获得资源来支持市场上所有 Linux 版本。  

    无论如何,我都提交了增强报告 UNIFLASH-1338 (在下面签名的链接 SDOWP 中查看其状态)以进行可行性分析。  

    此致、

    拉斐尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Rafael、感谢您的努力。 我第一次尝试 SDOWP、但搜索 UNIFLASH-1338时返回"未找到"。 以随机示例搜索"codegen-6607"可以正常工作、因此我认为这不是浏览器问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另一天、现在进行相同的搜索、查找 UNIFLASH-1338增强请求;谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    是的、抱歉。 我没有注意到你之前的答复。 在某种程度上、系统将其推送到外部站点 SDOWP 的速度相当慢。

    此致、

    拉斐尔