首页 > 解决方案 > PyInstaller 无法创建可执行文件

问题描述

希望你们一切都好。我在 Kivy 中开发了一个用于位置跟踪的 Python 脚本。现在我需要把这个脚本变成一个可执行文件(不需要一个文件的可执行文件;一个文件夹包就足够了)。我尝试了此处列出的步骤。我将首先向您展示我的文件内容;然后我在整个过程中完成的步骤:

.kv 文件

MapView:
    id: map_view
    zoom: 17
    lat: app.latitude
    lon: app.longitude
    MapMarker:
        id: map_view_marker
        lat: app.latitude
        lon: app.longitude

.py 文件(只是导入的模块)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from datetime import datetime
from kivy.lang import Builder
from kivy.app import App
from kivy.properties import StringProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.garden.mapview import MapView, MapMarker
import mysql.connector
import os

我使用虚拟环境来开发脚本,因此我从虚拟环境命令窗口 (Windows CMD) 使用 PyInstaller。这是我使用的第一个命令:

python -m PyInstaller --name Pika mapview_try.py

之后,我修改了这样创建的 .spec 文件:

.spec 文件:

from kivy_deps import sdl2, glew

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


block_cipher = None


a = Analysis(['mapview_try.py'],
             pathex=['C:\\Users\\Lenovo\\Desktop\\Bizero\\Pika_Takip'],
             binaries=[],
             datas=[],
             hiddenimports=['kivy'],
             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)

a.datas += [('Code\mapview_try.kv', 'C:\\Users\\Lenovo\\Desktop\\Bizero\\Pika_Takip\mapview_try.kv', 'DATA')]

exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='mapview_try',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=False )
coll = COLLECT(exe, Tree('C:\\Users\\Lenovo\\Desktop\\Bizero\\Pika_Takip\\'),
               a.binaries,
               a.zipfiles,
               a.datas,
           *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False,
               upx=True,
               upx_exclude=[],
               name='mapview_try')

之后,我在同一个 cmd 窗口中运行以下命令:

python -m PyInstaller Pika.spec

但是,当我尝试在此命令之后运行可执行文件时。我得到“kivy.garden”未找到错误。我可以找到这个模块的目录并直接添加到可执行文件的路径中吗?或者是否有一个命令参数可以用来导入所有模块?先感谢您。

标签: pythonpyinstallerexecutable

解决方案


推荐阅读