1

我在 3.6 中编写了一个小型 python 程序来自动化我每月在工作中执行的任务。它可能对我一起工作的其他人有用,所以我一直在尝试将它与 Pynsist 捆绑在一起。

在捆绑之前,程序从 IDLE 和 windows 命令行都成功运行。通过 .exe 捆绑和安装后,我收到一条错误消息:

回溯(最后一次调用):文件“C:\Program Files\Time Clocker\timeClocker.py”,第 7 行,从 selenium 导入 webdriver ModuleNotFoundError: No module named 'selenium'

Selenium 不是在我的代码中导入的第一个模块,因此似乎其他模块已正确捆绑,问题仅出在 selenium 上。

我尝试在pynsist_pkgs文件夹中包含一些硒文件,但这也不起作用。这是这些文件,不确定它们是否正确。

04/04/2017  02:25 PM            19,057 CHANGES
03/08/2017  07:00 AM               915 MANIFEST.in
04/04/2017  02:28 PM             7,864 PKG-INFO
04/04/2017  08:11 AM             5,719 README.rst
04/13/2017  04:50 PM    <DIR>          selenium
04/13/2017  04:50 PM    <DIR>          selenium.egg-info
04/04/2017  02:28 PM               230 setup.cfg
04/04/2017  02:26 PM             3,806 setup.py
               6 File(s)         37,591 bytes

这是我的 installer.cfg 文件供参考:

[Application]
name=Time Clocker
version=1.0
package:
script=timeClocker.py
console=true    

[Python]    

version=3.6.1    

[Include]    

packages = selenium
     re
     getpass    

files = chromedriver.exe

如果有人有任何想法,将不胜感激!

4

1 回答 1

1

重新发布作为答案,以便其他遇到此问题的人清楚。

installer.cfg 文件用于script=定义如何启动应用程序。建议entry_point=改用指定函数,例如:

entry_point=my_module:main

该文档包含有关此功能的更多信息。

如果您确实需要使用脚本,请确保它在尝试导入包之前在顶部有一些样板:

import sys
sys.path.insert(0, 'pkgs')

使用entry_point=允许 Pynsist 自动添加这个样板和更多(例如,更好地处理 GUI 应用程序中未捕获的异常)。这就是为什么我总是建议 over script=。Pynsist 的未来版本甚至可能会删除指定脚本的选项。

于 2017-04-20T21:29:09.360 回答