pikepdf打包时遇到的问题以及解决办法[pyinstaller]

我们小区的一朋友需要擦除PDF的密码,方便文件打印,通过一段时间的研究后发现pikepdf可以实现这个功能,我结合pyqt5实现这个软件的编写,在macos下顺利完成代码的编写,在windows中进行打包,但打包的过程却发现一个问题,提示不能调用main函数,重新编译,取消"-w"方法

运行时提示错误:python ImportError: Failed to determine version

通过查找时,发现之前也有人遇到这样的问题

下面是他们的反馈

 init.py 的21行,代码如下
try:
    from ._version import __version__
except ImportError as _e:  # pragma: no cover
    raise ImportError("Failed to determine version") from _e

从.version.py文件导入__version__失败?看看_version.py
try:
    from importlib_metadata import version as _package_version  # type: ignore
except ImportError:
    from importlib.metadata import version as _package_version
__version__ = _package_version('pikepdf')
__all__ = ['__version__']


再看看上面的异常,也就再_package_version这个函数了。这边可以先写个简单的demo.py验证下,使用pyinstgaller编译后运行。

# demo.py
import pikepdf
if __name__ == '__main__':
    print("Hello World")

# 输出
Traceback (most recent call last):
  File "pikepdf\__init__.py", line 19, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
  File "pikepdf\_version.py", line 13, in <module>
  File "importlib\metadata.py", line 530, in version
  File "importlib\metadata.py", line 503, in distribution
  File "importlib\metadata.py", line 177, in from_name
importlib.metadata.PackageNotFoundError: pikepdf
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "main.py", line 1, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 495, in exec_module
  File "pikepdf\__init__.py", line 21, in <module>
ImportError: Failed to determine version
[29708] Failed to execute script 'main' due to unhandled exception!

修复方案

根据网友的建议,降低pikepdf版本

pip3 uninstall pikepdf

pip3 install pikepdf==5.1.3

然后重新打包

pyinstaller -F -w -i=pdf.ico  ./main/main.py

问题解决!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值