在编译的 python exe 中使用 Tshark

Using Tshark in compiled python exe

我有一个有效的 python 脚本,它使用并导入了 pyshark,因此也导入了 tshark。

只要我运行代码通过pycharm,一切都很好。一用pyinstaller编译就报错:

Exception in Tkinter callback
Traceback (most recent call last):
  File "tkinter\__init__.py", line 1921, in __call__
  File "main.py", line 458, in get_pdu_ids
  File "pyshark\capture\capture.py", line 232, in _packets_from_tshark_sync
  File "asyncio\base_events.py", line 646, in run_until_complete
  File "pyshark\capture\capture.py", line 396, in _get_tshark_process
  File "pyshark\capture\capture.py", line 373, in _get_tshark_path
  File "pyshark\tshark\tshark.py", line 30, in get_process_path
  File "configparser.py", line 782, in get
  File "configparser.py", line 1153, in _unify_values
configparser.NoSectionError: No section: 'tshark'

我尝试使用此修复程序,它现在也应该合并到 pyshark 中,但它没有改变任何东西:https://github.com/KimiNewt/pyshark/issues/245

当然一切都是最新的。

注意:每个其他导入的模块都可以完美运行,例如scapy.

提前致谢!

我找到了解决方案,将其张贴在这里以帮助其他人遇到同样的错误:

我不得不 hard-code 以下内容,因为编译后的程序没有得到正确的变量(不知道为什么):

文件:\venv\Lib\site-packages\pyshark\capture\capture.py

def _get_tshark_path(self):
     return get_process_path(self.tshark_path)

def _get_tshark_path(self):
     return r"C:/Program Files/Wireshark/tshark.exe"

这是一个肮脏的解决方案,不是解决问题而是绕过问题,但它有效,我还是想分享它。