本文为本人编译打包 NovalIDE 过程的记录,以防忘记
# dev 分支下的文件
git clone https://gitee.com/wekay/NovalIDE.git
pip install pipenv
# 本文安装虚拟环境的 python 版本为3.8
pipenv install --python 3.8
pipenv install pywin32 --dev
pipenv install pyinstaller --dev
pipenv install psutil --dev
pipenv install watchdog --dev
pipenv install chardet --dev
pipenv install pyperclip --dev
pipenv install wmi --dev
pipenv install requests --dev
pipenv install pillow --dev
pipenv install six --dev
从该步骤进入虚拟环境开始,后面步骤均在虚拟环境中完成
pipenv shell
cd NovalIDE
python NovalIDE.py
pyinstaller pyinstaller.novalide.python.spec
AttributeError: module ‘time’ has no attribute ‘clock’
由于我使用的是Python3.8版本的,NovalIDE源码中有使用time.clock(),Python3.8 不再支持 time.clock(),可将 time.clock() 替换成 time.perf_counter()
noval/util/utils.py, line 294, line 296
time.clock() -> time.perf_counter()
PermissionError: [Errno 13] Permission denied
我打包时出现了这个问题是因为我后台运行了360程序,退出再重新运行一遍就可以打包成功了
ModuleNotFoundError: No module named ‘distutils.version’
运行打包好的exe文件,出现该错误,是因为使用了 from distutils.version import ...
,所以没有将 distutils.version 依赖打包
在spec中的 hiddenimports 添加 distutils.version ,重新打包问题解决
a = Analysis(['NovalIDE.py'],
pathex=['./'],
binaries=[],
datas=datas,
hiddenimports=['noval.util.downutils','noval.python.pyeditor','noval.syntax.pat','site','noval.running','noval.shell','noval.roughparse','distutils.version'],
hookspath=[],
runtime_hooks=[],
excludes=['noval.util.command'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
_assemblies=False,
cipher=block_cipher,
noarchive=False)