【问题标题】:Reducing .exe file using virtual environment使用虚拟环境减少 .exe 文件
【发布时间】:2020-04-14 12:55:15
【问题描述】:

我对 Python 很陌生(坦率地说,一般来说编程),并且正在使用 pyinstaller 从 .py 文件创建 .exe 文件。经过几次试验后,我发现 pyinstaller 包含许多不必要的库,例如 scipy,这使我的文件变得非常大。 为了解决这个问题,我创建了一个虚拟环境并安装了我需要的模块。但是,当我尝试使用 pyinstaller -w -F -i "iconpath" filename.py 在 venv 中创建 .exe 时,它​​不起作用(它只是在下面代码的最后一行之后停止):

126 INFO: PyInstaller: 3.6
126 INFO: Python: 3.8.1
127 INFO: Platform: Windows-10-10.0.16299-SP0
128 INFO: wrote C:\Users\26039190\RefCal_v4\RefCal_v4.spec
131 INFO: UPX is not available.
139 INFO: Extending PYTHONPATH with paths
['C:\\Users\\26039190\\RefCal_v4', 'C:\\Users\\26039190\\RefCal_v4']
139 INFO: checking Analysis
139 INFO: Building Analysis because Analysis-00.toc is non existent
139 INFO: Initializing module dependency graph...
143 INFO: Caching module graph hooks...
153 INFO: Analyzing base_library.zip ...
5696 INFO: Processing pre-find module path hook   distutils
5697 INFO: distutils: retargeting to non-venv dir 'C:\\Users\\26039190\\AppData\\Local\\Programs\\Python\\Python38-32\\lib'
9412 INFO: Caching module dependency graph...
9565 INFO: running Analysis Analysis-00.toc
9570 INFO: Adding Microsoft.Windows.Common-Controls to dependent assemblies of final executable
  required by c:\users\26039190\env\scripts\python.exe
9601 INFO: Analyzing C:\Users\26039190\RefCal_v4\RefCal_v4.py
13180 INFO: Processing pre-find module path hook   site
13181 INFO: site: retargeting to fake-dir 'c:\\users\\26039190\\env\\lib\\site-packages\\PyInstaller\\fake-modules'
14909 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
21403 INFO: Processing pre-safe import module hook   six.moves
122612 INFO: Processing module hooks...
122615 INFO: Loading module hook "hook-distutils.py"...
122622 INFO: Loading module hook "hook-encodings.py"...
122840 INFO: Loading module hook "hook-lib2to3.py"...
122846 INFO: Loading module hook "hook-matplotlib.backends.py"...
124362 INFO:   Matplotlib backend "GTK3Agg": ignored
    backend Gtk3Agg requires cairo
124925 INFO:   Matplotlib backend "GTK3Cairo": ignored
    cairo backend requires that pycairo>=1.11.0 or cairocffiis installed
125538 INFO:   Matplotlib backend "MacOSX": ignored
    cannot import name '_macosx' from 'matplotlib.backends' (c:\users\26039190\env\lib\site-packages\matplotlib\backends\__init__.py)
126226 INFO:   Matplotlib backend "nbAgg": ignored
    No module named 'IPython'
127194 INFO:   Matplotlib backend "Qt4Agg": added
128011 INFO:   Matplotlib backend "Qt4Cairo": ignored
    cairo backend requires that pycairo>=1.11.0 or cairocffiis installed
128802 INFO:   Matplotlib backend "Qt5Agg": added
129303 INFO:   Matplotlib backend "Qt5Cairo": ignored
    cairo backend requires that pycairo>=1.11.0 or cairocffiis installed
130180 INFO:   Matplotlib backend "TkAgg": added
131163 INFO:   Matplotlib backend "TkCairo": ignored
    cairo backend requires that pycairo>=1.11.0 or cairocffiis installed
131845 INFO:   Matplotlib backend "WebAgg": ignored
    Traceback (most recent call last):
  File "c:\users\26039190\env\lib\site-packages\matplotlib\backends\backend_webagg.py", line 27, in <module>
    import tornado
ModuleNotFoundError: No module named 'tornado'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<string>", line 12, in <module>
  File "c:\users\26039190\env\lib\site-packages\matplotlib\backends\backend_webagg.py", line 29, in <module>
    raise RuntimeError("The WebAgg backend requires Tornado.")
RuntimeError: The WebAgg backend requires Tornado.
132610 INFO:   Matplotlib backend "WX": ignored
    No module named 'wx'
133240 INFO:   Matplotlib backend "WXAgg": ignored
    No module named 'wx'
133885 INFO:   Matplotlib backend "WXCairo": ignored
    No module named 'wx'
134389 INFO:   Matplotlib backend "agg": added
135129 INFO:   Matplotlib backend "cairo": ignored
    cairo backend requires that pycairo>=1.11.0 or cairocffiis installed
136202 INFO:   Matplotlib backend "pdf": added
136913 INFO:   Matplotlib backend "pgf": added
137455 INFO:   Matplotlib backend "ps": added
138036 INFO:   Matplotlib backend "svg": added
138739 INFO:   Matplotlib backend "template": added
139367 INFO: Loading module hook "hook-matplotlib.py"...
139836 INFO: Loading module hook "hook-numpy.core.py"...
140027 INFO: Loading module hook "hook-numpy.py"...
140031 INFO: Loading module hook "hook-pkg_resources.py"...
140710 INFO: Processing pre-safe import module hook   win32com
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'win32com'
140839 INFO: Processing pre-safe import module hook   win32com
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ModuleNotFoundError: No module named 'win32com'
140954 INFO: Excluding import '__main__'
140957 INFO:   Removing import of __main__ from module pkg_resources
140966 INFO: Loading module hook "hook-pydoc.py"...
140976 INFO: Loading module hook "hook-PyQt5.py"...

有人能解释一下吗? 顺便说一句,我正在使用 anaconda,这可能是问题吗?有人说我应该卸载anaconda,但我不想删除anaconda,因为我经常使用Jupyter和Spyder

谢谢大家

【问题讨论】:

  • 您应该单独发布您的问题。无论如何... 1. collections 是 Python 的 标准库 的一部分,因此无需单独安装。 2. 错误信息是什么?
  • 好的。感谢您的评论。好的,所以我不需要安装集合。谢谢!对于错误,它的说法如下: Traceback (most recent call last): File "c:\users\26039190\env\lib\site-packages\matplotlib\backends\backend_webagg.py", line 27, in import tornado ModuleNotFoundError: No module named 'tornado' 在处理上述异常的过程中,又发生了一个异常:
  • 编辑您的问题以添加错误消息的内容并删除有关collections 的部分,它们在这里不值得提问,这将有助于使您的问题更加集中。
  • 好的 sinoroc 感谢您的评论;希望现在更好

标签: python virtualenv pyinstaller


【解决方案1】:

集合包含在The Python Standard Library中,无需安装。

【讨论】:

  • 关于在 venv 中创建 exe,您需要发布您面临的错误。但是看看这个问题可能会有所帮助stackoverflow.com/questions/48629486/…
  • 编辑问题并添加错误堆栈后,您可以看到错误原因是您缺少几个库,tornado 和 win32com。你可以简单地 pip install 他们两个。
  • 谢谢 pedram。我安装了这两个模块,虽然这些错误都消失了,但该过程在此行之后停止:~~~ 39735 INFO: Loading module hook "hook-PyQt5.py"...
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 2019-10-13
  • 2019-12-26
相关资源
最近更新 更多