簡體   English   中英

Python代碼轉exe時如何導入需要的模塊

[英]How to import the modules you need when converting Python code to exe

使用pyinstaller將Python代碼轉換為exe時,找不到我安裝的某些模塊,因此該程序無法在其他PC上運行。

所有插件如下圖所示:

import getpass
import os.path
import random
import smtplib
import ssl
import time
import keyboard
import psutil
from email import encoders
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

我把go轉cmd,cd到一個目錄下一個文件,然后寫:

pyinstaller "directory with .py file" -d -x "save directory"

build 和 dist 文件夾在目錄中創建。 我翻遍了它們,我仍然沒有找到將丟失的模塊扔到哪里。 找到一個 txt 文件,上面寫着他無法捕獲。

這是一個txt文件的片段:

missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
missing module named 'org.python' - imported by copy (optional), setuptools.sandbox (conditional), xml.sax (delayed, conditional)
missing module named _scproxy - imported by urllib.request (conditional)
missing module named pwd - imported by posixpath (delayed, conditional), shutil (optional), tarfile (optional), pathlib (delayed, conditional, optional), subprocess (optional), http.server (delayed, optional), webbrowser (delayed ), netrc (delayed, conditional), getpass (delayed), distutils.util (delayed, conditional, optional), psutil (optional), distutils.archive_util (optional)
missing module named urllib.pathname2url - imported by urllib (conditional), PyInstaller.lib.modulegraph._compat (conditional)
missing module named 'java.lang' - imported by platform (delayed, optional), xml.sax._exceptions (conditional)
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
missing module named _posixsubprocess - imported by subprocess (optional), multiprocessing.util (delayed)
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level), PyInstaller.loader.pyimod02_archive (delayed)
missing module named pep517 - imported by importlib.metadata (delayed)
missing module named posix - imported by os (conditional, optional), shutil (conditional)
missing module named resource - imported by posix (top-level), test.support (delayed, conditional, optional), psutil._pslinux (optional)
missing module named grp - imported by shutil (optional), tarfile (optional), pathlib (delayed, optional), subprocess (optional), distutils.archive_util (optional)
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
missing module named termios - imported by tty (top-level), getpass (optional), psutil._compat (delayed, optional)
missing module named vms_lib - imported by platform (delayed, optional)
missing module named java - imported by platform (delayed)
missing module named _winreg - imported by platform (delayed, optional), pkg_resources._vendor.appdirs (delayed, conditional)
missing module named readline - imported by cmd (delayed, conditional, optional), code (delayed, conditional, optional), pdb (delayed, optional)
missing module named org - imported by pickle (optional)
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
missing module named psutil._psutil_aix - imported by psutil (top-level), psutil._psaix (top-level)
missing module named psutil._psutil_sunos - imported by psutil (top-level), psutil._pssunos (top-level)
missing module named psutil._psutil_bsd - imported by psutil (top-level), psutil._psbsd (top-level)
missing module named psutil._psutil_osx - imported by psutil (top-level), psutil._psosx (top-level)
missing module named psutil._psutil_linux - imported by psutil (top-level), psutil._pslinux (top-level)
missing module named fcntl - imported by keyboard._nixcommon (delayed), psutil._compat (delayed, optional)
missing module named dummy_threading - imported by psutil._compat (optional), numpy.distutils.misc_util (optional), numpy.distutils.ccompiler (optional)
missing module named _curses - imported by curses (top-level), curses.has_key (top-level)
missing module named AppKit - imported by keyboard._darwinkeyboard (top-level)
missing module named Quartz - imported by keyboard._darwinkeyboard (top-level)
missing module named Queue - imported by keyboard (optional), keyboard._nixcommon (optional), keyboard._generic (optional)

告訴我把缺失的模塊放在哪里?

我知道這是一種變態,但應該如此。

pyinstaller 選項:我找不到有關選項-x的任何信息,也許這就是問題所在。

另外: pyinstaller -d 選項

似乎-d選項需要 arguments。 也許嘗試刪除該選項或輸入所需的值之一:

-d <all,imports,bootloader,noarchive>, --debug <all,imports,bootloader,noarchive>

協助調試凍結的應用程序。 此參數可能多次提供給 select 以下幾個選項。

all:以下所有三個選項。

導入:為底層 Python 解釋器指定 -v 選項,使其在每次初始化模塊時打印一條消息,顯示加載它的位置(文件名或內置模塊)。 請參閱https://docs.python.org/3/using/cmdline.html#id4

引導加載程序:告訴引導加載程序在初始化和啟動捆綁應用程序時發出進度消息。 用於診斷缺少導入的問題。

noarchive:不是將所有凍結的 Python 源文件作為存檔存儲在生成的可執行文件中,而是將它們作為文件存儲在生成的 output 目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM