使用pyins编译时,sklearn import不能与scapy import一起使用

2024-04-23 17:01:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用PyInstaller将一些python代码转换为exe,导入sklearn时遇到了问题。你知道吗

我在尝试编译这个简单的脚本时发现了这个问题主.py地址:

import sklearn
print("success")

除非我将以下内容添加到spec文件中,否则此操作不起作用:

hiddenimports=['sklearn.neighbors.typedefs'],

但由于某些原因,当我将脚本更改为

import scapy.sendrecv
import sklearn

print("success")

它可以编译,但无法在运行时导入sklearn

另一件奇怪的事情是,不是所有的scapy库都使它有bug,事实上,有了这个文件:

import scapy.layers
import sklearn

print("success")

它工作得很好。。。你知道吗

我试着为scapy创建钩子,在hiddenimports中添加scapy,但是没有任何效果。。。 如果你有什么想法,我会很高兴听到的!你知道吗

这是完整的主要规格文件

# -*- mode: python ; coding: utf-8 -*-

import sys
sys.setrecursionlimit(5000)
block_cipher = None


a = Analysis(['main.py'],
             pathex=['C:\\Users\\cpin\\pyinstaller_test'],
             binaries=[],
             datas=[],
             hiddenimports=['sklearn.neighbors.typedefs'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='main')

以下是错误输出:

error code 错误发生在中的第46行主.py上面是注释代码(例如import scapy.sendrecv


Tags: 文件pyimportfalsetruemainsklearnblock