PyInstaller - 你如何处理环境变量?

use*_*660 8 python pyinstaller

背景:

我正在尝试将 python 脚本转换为可以在其他计算机上使用的可执行文件。我决定使用 PyInstaller。我正在使用Python 2.7.13 / Anaconda 2.2.0 (64-bit)。我当然看过很多例子,我可以通过基本例子来实现这一点。但是,我现在正在处理的脚本使用环境变量。以下代码块出现在我的 python 脚本的开头:

import os
# force qt4
os.environ['ETS_TOOLKIT'] = 'qt4'
os.environ['QT_API'] = 'pyqt'

from traits.api import HasTraits, Range, Instance, Button, on_trait_change, Bool, Str, Enum, Float, Int
from traitsui.api import View, Item, Group, HGroup, spring, Handler, Action, InstanceEditor, Menu, MenuBar, message, \
    Tabbed
from mayavi.core.ui.api import MayaviScene, SceneEditor, MlabSceneModel
from pyface.api import FileDialog, OK
import yaml
from mayavi import mlab
import numpy as np
from collections import namedtuple
import gdal
Run Code Online (Sandbox Code Playgroud)

问题:

pyinstaller --onefile filename.py在命令行上运行会产生一个.exe,但由于错误而无法运行:ImportError: No module named qt4."qt4" 不是模块,所以我假设问题出在 " os.environ['ETS_TOOLKIT'] = 'qt4'" 行上。在查看了与 PyInstaller 相关的各种问题后,我知道如何使用 'hiddenimports',但我不知道如何处理环境变量。显然类似的东西pyinstaller --onefile --hidden-import qt4 filename.py不起作用。

小智 1

你应该试试pyinstaller --onefile --hidden-import "os" filename.py