我在3.6中写了一个小python程序来自动执行我每月工作的任务。它可能对我工作的其他人有用,所以我一直试图将它与Pynsist捆绑在一起。
在捆绑之前,程序从IDLE和Windows命令行都成功运行。通过.exe捆绑和安装后,我收到一条错误说明:
回溯(最近一次调用最后一次):文件“C:\ Program Files \ Time Clocker \ timeClocker.py“,第7行,in 来自selenium import webdriver ModuleNotFoundError:没有名为'selenium'的模块
Selenium不是第一个在我的代码中导入的模块,因此看起来其他模块正确捆绑,问题就在于selenium。
我尝试在 pynsist_pkgs 文件夹中包含一些selenium文件,但这也不起作用。以下是这些文件,不确定它们是否正确。
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
如果有人有任何想法,那将非常感激!
答案 0 :(得分:1)
作为答案重新发布,以便其他遇到此问题的人明白。
installer.cfg文件使用script=
来定义如何启动应用程序。建议使用entry_point=
来指定一个函数,例如:
entry_point=my_module:main
The documentation了解更多信息。
如果您确实需要使用脚本,请确保在尝试导入包之前在顶部有一些样板:
import sys
sys.path.insert(0, 'pkgs')
使用entry_point=
允许Pynsist自动添加此样板和更多(例如,更好地处理GUI应用程序中未捕获的异常)。这就是为什么我总是建议script=
以上。 Pynsist的未来版本甚至可以删除指定脚本的选项。