cxFreeze和Jaraco:ImportError

时间:2016-10-22 04:29:12

标签: python cx-freeze

我正在尝试使用irclib库创建IRC客户端。但是,当我尝试使用cxFreeze冻结脚本时,我总是遇到这个错误:

Traceback (most recent call last):
  File "C:\python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "client.py", line 38, in <module>
ImportError: No module named jaraco

setup.py脚本已多次修改,尝试包含文件,包等。似乎没什么用。这是当前版本的参考:

from cx_Freeze import setup, Executable

client = Executable(
    script="client.py",
    base="Win32GUI",
)

setup(
    name = "client",
    version = "0.2",
    description = "client",
    options = {'build_exe': {'includes': ["jaraco"], "packages": ["jaraco"]}},
    executables = [client],
)

客户端的脚本可以缩短为一行:

from irc import client

这就是全部。我没有使用Jaraco,irclib(包irc)是。 Jaraco必须作为irclib的依赖项安装。

我试图找出原因可能发生的原因,但到目前为止,没有找到任何原因。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,经过一些挖掘,似乎在使用扭曲冻结应用程序时zope存在同样的问题。虽然我没有用jaraco测试它,但我认为这是同样的问题。我希望这个解决方案适用于遇到同样问题的用户:

  1. 在“site-packages”目录中的“jaraco”包中,添加“ init .py”文件。它可以是空的。为什么不提供,我不知道。对于cxFreeze,没有“ init .py”的软件包不是软件包。
  2. 重新运行'setup.py'脚本。不要将'jaraco'作为包装,提供需要它的包装(在这里,它将是'irc')。
  3. 这是setup.py脚本:

    from cx_Freeze import setup, Executable
    
    client = Executable(
        script="client.py",
        base="Win32GUI",
    )
    
    setup(
        name = "client",
        version = "0.2",
        description = "client",
        options = {'build_exe': {'packages': ["irc"]}},
        executables = [client],
    )
    

    我提供这个答案,因为它与twisted和zope一起工作得很好。看到我的客户现在使用扭曲进行IRC通信,我不知道下面提供的步骤是否有效,但这是帮助我扭曲的原因。

    HTH,