Selenium ModuleNotFoundError运行安装的程序与Pynsist捆绑在一起

时间:2017-04-20 16:10:42

标签: python selenium pynsist

我在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

如果有人有任何想法,那将非常感激!

1 个答案:

答案 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的未来版本甚至可以删除指定脚本的选项。