Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python—构建可执行文件时遇到的问题_Python_Selenium_Wxpython - Fatal编程技术网

Python—构建可执行文件时遇到的问题

Python—构建可执行文件时遇到的问题,python,selenium,wxpython,Python,Selenium,Wxpython,我是一名python程序员,我正在尝试构建一个可执行二进制文件,以便将我的软件分发给我的客户,即使它不是完全可执行的,我希望能够以一种方便最终用户的方式分发我的软件 我已经尝试过PyInstaller和Py2Exe,我在一个特定的软件中遇到了同样的问题 我在我的程序中使用了splinter模块(这当然是一个与其他框架(如Selenium)交互的新的高级框架),每次我尝试编译它时,似乎都有一个名为“webdriver.xpi”的文件最后一个包中总是忽略了这一点,因此,当程序尝试执行web驱动程序时

我是一名python程序员,我正在尝试构建一个可执行二进制文件,以便将我的软件分发给我的客户,即使它不是完全可执行的,我希望能够以一种方便最终用户的方式分发我的软件

我已经尝试过PyInstaller和Py2Exe,我在一个特定的软件中遇到了同样的问题

我在我的程序中使用了splinter模块(这当然是一个与其他框架(如Selenium)交互的新的高级框架),每次我尝试编译它时,似乎都有一个名为“webdriver.xpi”的文件最后一个包中总是忽略了这一点,因此,当程序尝试执行web驱动程序时,它会失败,并出现一个IO错误,表示找不到文件“webdriver.xpi”……但除此之外,GUI和所有东西都工作得非常好

那么,有没有一种方法可以手动包含它呢?我试图通过浏览特定文件夹@library.zip文件手动将其包括在内,但没有成功

我不是这方面的专家,我依赖于GUI2Exe来构建所有东西……如果可能的话,我会非常感激关于如何解决这个问题的一些建议


谢谢。

您需要
setup.py
中的说明才能在发行版中包含任何资源文件。有两种方法可以做到这一点(请参见distutils、setuptools、distribute,具体取决于您用于构建分发版的内容),但是wiki有一个独特的功能

如果要将资源安装到与exe相同的目录中,则可能需要使用查找资源


有关在发行版中包含资源文件的更多信息,请参阅。

我整天都在做这件事,并找到了一个解决方法,虽然很隐蔽,但很有效。在我收到的错误消息中,我注意到library.zip中有一个空格。我无法在py2exe或selenium的源代码中找到它。我也曾尝试将xpi文件放入库zip中,但没有成功。解决办法是:

  • 在安装文件中,使用以下选项:

    setup(
        console=['yourFile.py'],
        options={
                "py2exe":{
                        "skip_archive": True,
                        "unbuffered": True,
                        "optimize": 2
                }
        }
    )
    
  • 运行py2exe安装

  • 将xpi文件复制到dist目录中

  • 这应该可以做到。

    我知道这已经过时了,但我想给出一个更新的答案,以避免建议程序员手动执行某些操作

    有一个
    py2exe
    选项将数据文件列表指定为元组<代码>(pathtocopyto[文件列表和获取位置])

    例如:

    from disutils.core import setup
    import py2exe
    
    wd_base = 'C:\\Python27\\Lib\\site-packages\\selenium\\webdriver'
    RequiredDataFailes = [
        ('selenium/webdriver/firefox', ['%s\\firefox\\webdriver.xpi'%(wd_base), '%s\\firefox\\webdriver_prefs.json'%(wd_base)])
    ]
    
    setup(
        console=['MyScript.py'],
        data_files=RequiredDataFiles,
        options={
            **mypy2exeopts
        }
    )
    

    我目前知道的唯一缺点是,您仍然需要
    跳过\u archive=True
    。获取library.zip中的数据文件有一些变通方法,但我对webdriver的信息不太了解。

    以下是您问题的解决方案: 我已经修改了一点代码,应该可以工作了,因为我有一个相同的问题,我解决了它:

    from distutils.core import setup
    import py2exe
    
    wd_base = 'C:\\Python27\\Lib\site-packages\\selenium-2.44.0-py2.7.egg    \\selenium\\webdriver'
    RequiredDataFailes = [
    ('selenium/webdriver/firefox', ['%s\\firefox\\webdriver.xpi'%(wd_base), '%s\\firefox\\webdriver_prefs.json'%(wd_base)])
    ]
    
    setup(
    windows=[{"script":"gui_final.py"}],options={"py2exe":{"skip_archive": True,"includes":["sip"]}},
    data_files=RequiredDataFailes,
    
    )
    

    你能展示你用于py2exe的setup.py脚本吗?你不能在运行它之前将文件添加到应用程序目录吗?我同意aknatn的观点,我很久以前就找到了这个问题的解决方案,但完全忘记了我在这里发布了这个问题。主要的解决方案是,即使使用像GUI2Exe这样的gui构建器,也可以执行任何操作,只需确保最终的包没有压缩或任何东西,并且所有内容都解压缩到一个文件夹中,您可以手动添加.xpi文件并使其正常工作。后来,我使用类似NSIS的东西将其打包到一个很酷的安装向导中,其中包含许可协议、密钥文件等,以便将其分发给第三方。我必须说,我从乱搞中学到了很多,试图让Python正常工作:)哈哈,我确实试过了……它说投票需要15分钟,而不是手动复制它们,为什么不使用
    py2exe
    setup选项
    datafiles=[('path/copy/them/to',['list/of/file/path/this.txt')]
    ?当我尝试您的脚本时,它显示出一个关于sip的错误。没有定义或未知的