大家好,
使用Pythong 2.4和PY2EXE 0.6.6.因此,我创建了一个用于测试的WXPYTHON应用程序.这个想法是拥有一个测试目录,以便每次应用程序启动时,都会在目录中查看并将其看到的测试加载到运行时使用的列表中.因此,我在当地的机器上可以正常工作,但是现在我试图使其与PY2EXE合作.
我的问题是,如果我在py2exe中包含"测试"软件包
,我所有的测试都包含在我的Library.zip中.这有效,但是随后用户无法轻易创建自己的测试,并将应用程序被应用程序拾取,因为EXE必须每次使用测试才能再生.
因此,我可以告诉PY2EXE不要包含包装,而只需手动复制目录,但是当我尝试在主文件中导入软件包时,我会收到一个错误" attributeError:'module'对象没有属性blah ".在导入该软件包之前,我已经尝试在主文件中附加到sys.path,但这似乎不起作用.
因此,在py2exe中,是否有任何方法可以导入库中未包含的软件包?
# 回答1
您可以在下面使用Package_dir和py_modules的组合(我想在可分发文件中包含的软件包为../common/ [logfile,remotecmd和crc32])
- setup(
- zipfile = None,
- # We use os.path.join for portability
- package_dir = {'': os.path.join('..', 'Common')},
- py_modules = ['logfile', 'remoteCmd', 'crc32'],
- windows = [
- {
- "script": "MyTool.py",
- "icon_resources": [(1, "MT.ico")],
- "other_resources": [(24,1,manifest)]
- }
- ],
- )
-
# 回答2
抱歉,但这似乎没有什么区别.我将测试目录添加为" package_dir",并将其添加为" py_modules",但是当我尝试启动该应用程序时,我仍然遇到相同的错误.如果我给出更多细节,我会在最后添加我的设置.
另一个复杂因素可能是我的目录结构.我的测试包实际包含几个子软件包.因此,我的__init__.py对测试看起来像这样.
然后有一个ANSI和ETSI目录,从那里,每个目录都有自己的子目录,并带有自己的__init__.py.当我尝试启动该应用程序时,它说" attributeError:'模块'对象没有属性'ansi'.因此,我认为PY2EXE中的路径有问题,因为测试在库中的方式不在.就像我说的那样,这一切都很好地解释了本地的python,但是在我的__init__.py中,我还必须做什么特别的事情吗?
完整设置.Py仅删除个人信息
- from distutils.core import setup
- import py2exe
- import os
- import sys
-
- setup(name="isupConformance",
- options = {"py2exe": {
- "compressed": 1,
- "optimize": 2,
- #"packages": ["tests"],
- "dll_excludes": ["w9xpopen.exe"],
- "ascii": 1,
- "bundle_files": 1,
- }},
- #packages=["tests"],
- package_dir = {'' : 'c:\\Python24\\Scripts\\Isup Conformance\\tests'},
- py_modules=["GUI", "isupConfChassis", "isupConfSmta", "isupConfTest", "mgtsCtrl", "mgtsDevice", "sequence", "tests"],
- windows=
- [
- {
- "script": "gui.py",
- "icon_resources": [(1, "wi0124-64.ico")],
- "dest_base": "ISUP Conformance"
- }
- ],
- )
# 回答3
有人知道如何导入py2exe库中未包含的软件包吗?有可能吗?