From: Jason H. <jas...@gm...> - 2011-10-20 04:23:31
Attachments:
setup.py
|
Version info: Python 2.6.2 PyGTK 2.22 Twisted 10.2.0 crcmod 1.7 pywin32 214 py2exe 0.6.9 I'm trying to build a PyGTK/Twisted app on WinXP, and the latest stumbling block I've hit has been with crcmod (my setup.py is attached). The exe builds fine, but I get this error when trying to run it: -- Traceback (most recent call last): File "tasks.py", line 11, in <module> File "models\programmer.pyc", line 6, in <module> File "utils\flash.pyc", line 3, in <module> File "crcmod\__init__.pyc", line 7, in <module> ImportError: No module named predefined -- The crcmod __init__.py has this code in it: -- try: from crcmod.crcmod import * import crcmod.predefined except ImportError: # Make this backward compatible from crcmod import * import predefined __doc__ = crcmod.__doc__ -- Putting "crcmod.predefined" in the 'includes' or 'packages' hasn't helped and I'm out of ideas. Are there any workarounds I can apply here? I'd rather not hack up another module to work with py2exe, but I'm not above doing it as a last resort. I realise crcmod has been brought up on the list before, but it wasn't resolved. Cheers, Jason |
From: Mark H. <ski...@gm...> - 2011-10-20 04:46:05
|
What happens if you add crcmod to "packages"? That should suck the entire package in. Mark On 20/10/2011 3:23 PM, Jason Heeris wrote: > Version info: > Python 2.6.2 > PyGTK 2.22 > Twisted 10.2.0 > crcmod 1.7 > pywin32 214 > py2exe 0.6.9 > > I'm trying to build a PyGTK/Twisted app on WinXP, and the latest > stumbling block I've hit has been with crcmod (my setup.py is > attached). The exe builds fine, but I get this error when trying to > run it: > > -- > Traceback (most recent call last): > File "tasks.py", line 11, in<module> > File "models\programmer.pyc", line 6, in<module> > File "utils\flash.pyc", line 3, in<module> > File "crcmod\__init__.pyc", line 7, in<module> > ImportError: No module named predefined > -- > > The crcmod __init__.py has this code in it: > > -- > try: > from crcmod.crcmod import * > import crcmod.predefined > except ImportError: > # Make this backward compatible > from crcmod import * > import predefined > __doc__ = crcmod.__doc__ > -- > > Putting "crcmod.predefined" in the 'includes' or 'packages' hasn't > helped and I'm out of ideas. Are there any workarounds I can apply > here? I'd rather not hack up another module to work with py2exe, but > I'm not above doing it as a last resort. > > I realise crcmod has been brought up on the list before, but it wasn't resolved. > > Cheers, > Jason > > > > ------------------------------------------------------------------------------ > The demand for IT networking professionals continues to grow, and the > demand for specialized networking skills is growing even more rapidly. > Take a complimentary Learning@Ciosco Self-Assessment and learn > about Cisco certifications, training, and career opportunities. > http://p.sf.net/sfu/cisco-dev2dev > > > > _______________________________________________ > Py2exe-users mailing list > Py2...@li... > https://lists.sourceforge.net/lists/listinfo/py2exe-users |
From: Jason H. <jas...@gm...> - 2011-10-20 04:54:51
|
On 20 October 2011 12:45, Mark Hammond <ski...@gm...> wrote: > What happens if you add crcmod to "packages"? That should suck the entire > package in. I get exactly the same error :/ Just to be sure: the value of the 'packages' key should be a single string containing comma-separated package names, right? Not a list of individual package names? - Jason |
From: Mark H. <mha...@sk...> - 2011-10-20 05:14:06
|
On 20/10/2011 3:54 PM, Jason Heeris wrote: > On 20 October 2011 12:45, Mark Hammond<ski...@gm...> wrote: >> What happens if you add crcmod to "packages"? That should suck the entire >> package in. > > I get exactly the same error :/ > > Just to be sure: the value of the 'packages' key should be a single > string containing comma-separated package names, right? Not a list of > individual package names? That's correct. Do you see a warning message about not being able to locate it? If not, you may need to add some print statements to find_needed_modules() in build_exe.py to try and work out what is going wrong. Cheers, Mark |
From: Jason H. <jas...@gm...> - 2011-10-20 04:57:25
|
On 20 October 2011 12:54, Jason Heeris <jas...@gm...> wrote: > On 20 October 2011 12:45, Mark Hammond <ski...@gm...> wrote: >> What happens if you add crcmod to "packages"? That should suck the entire >> package in. > > I get exactly the same error :/ Oops, I changed the wrong "setup.py". What actually happens is that I get the error at build time: -- *** searching for required modules *** C:\Python26\lib\site-packages\py2exe\build_exe.py:16: DeprecationWarning: the sets module is deprecated import sets Traceback (most recent call last): File "setup.py", line 69, in <module> 'gtk/*.ui' File "C:\Python26\lib\distutils\core.py", line 152, in setup dist.run_commands() File "C:\Python26\lib\distutils\dist.py", line 975, in run_commands self.run_command(cmd) File "C:\Python26\lib\distutils\dist.py", line 995, in run_command cmd_obj.run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 243, in run self._run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 296, in _run self.find_needed_modules(mf, required_files, required_modules) File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 1342, in find_needed_modules mf.import_hook(package, None, ["*"]) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 719, in import_hook return Base.import_hook(self,name,caller,fromlist,level) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 141, in import_hook self.ensure_fromlist(m, fromlist) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 228, in ensure_fromlist self.ensure_fromlist(m, all, 1) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 233, in ensure_fromlist raise ImportError, "No module named " + subname ImportError: No module named crcmod.predefined -- - Jason |
From: Mark H. <mha...@sk...> - 2011-10-20 05:15:36
|
On 20/10/2011 3:57 PM, Jason Heeris wrote: > On 20 October 2011 12:54, Jason Heeris<jas...@gm...> wrote: >> On 20 October 2011 12:45, Mark Hammond<ski...@gm...> wrote: >>> What happens if you add crcmod to "packages"? That should suck the entire >>> package in. >> >> I get exactly the same error :/ > > Oops, I changed the wrong "setup.py". What actually happens is that I > get the error at build time: ... > raise ImportError, "No module named " + subname > ImportError: No module named crcmod.predefined So what *is* crcmod.predefined exactly? Is there some magic in crcmod/__init__.py which could explain that? Mark |
From: Jason H. <jas...@gm...> - 2011-10-20 05:06:20
|
On 20 October 2011 12:59, Mark Hammond <mha...@sk...> wrote: > So what *is* crcmod.predefined exactly? Is there some magic in > crcmod/__init__.py which could explain that? *points up* That's in my first post - it's a conditional import for backwards compatibility. - Jason |
From: Mark H. <mha...@sk...> - 2011-10-20 05:10:21
|
On 20/10/2011 4:06 PM, Jason Heeris wrote: > On 20 October 2011 12:59, Mark Hammond<mha...@sk...> wrote: >> So what *is* crcmod.predefined exactly? Is there some magic in >> crcmod/__init__.py which could explain that? > > *points up* That's in my first post - it's a conditional import for > backwards compatibility. I mean what is it physically? Is there a crcmod/predefined.py file on disk? If so I can't explain why the module-finder can't find it... It also isn't clear which branch of that __init__.py you expect to be taken - are you expecting to hit the ImportError then enter the backwards compatible branch - which would imply there is a predefined.py outside of the crcmod tree? Mark |
From: James <vi...@ro...> - 2011-10-20 05:08:57
|
I know I've had similar troubles before when the package is installed as a zipped-up egg. Unzipping the egg and putting the files right on the filesystem solved it for me. Not sure if that applies here. -James |
From: Jason H. <jas...@gm...> - 2011-10-20 05:12:14
|
On 20 October 2011 12:50, James <vi...@ro...> wrote: > I know I've had similar troubles before when the package is installed > as a zipped-up egg. Unzipping the egg and putting the files right on > the filesystem solved it for me. Not sure if that applies here. No, it's all unzipped - the .py files are right there in the site-packages/crcmod - Jason |
From: Mark H. <mha...@sk...> - 2011-10-20 05:23:30
|
[Re-adding py2exe] On 20/10/2011 4:15 PM, Jason Heeris wrote: > On 20 October 2011 13:09, Mark Hammond<mha...@sk...> wrote: >>>> So what *is* crcmod.predefined exactly? Is there some magic in >>>> crcmod/__init__.py which could explain that? > >> I mean what is it physically? Is there a crcmod/predefined.py file on disk? >> If so I can't explain why the module-finder can't find it... > > Oh right - the directory structure is: > > site-packages/crcmod/ > __init__.py > _crcfunpy.py > crcmod.py > predefined.py > test.py > > I think that would mean it'd hit the ImportError branch. I'd expect it not to be hit. The __init__ starts with: try: from crcmod.crcmod import * import crcmod.predefined except ImportError: and both of those should succeed. You could add a print to __init__.py to be sure, but that doesn't explain why py2exe can't find it. I wonder if its "modulefinder" module is out of date... Before you added crcmod to packages, what did you find crcmod related in your build\bdist.win32\winexe\collect-2.x directory created by py2exe? Mark > > - Jason > > >> It also isn't clear which branch of that __init__.py you expect to be taken >> - are you expecting to hit the ImportError then enter the backwards >> compatible branch - which would imply there is a predefined.py outside of >> the crcmod tree? >> >> Mark >> |
From: James <vi...@ro...> - 2011-10-20 05:30:43
|
I also had issues with a certain package not correctly installing a __init__.py in the folder. So I could import it via python interpreter, but py2exe would fail to find it when it looked like it was right there. Doesn't sound like this is the case, but worth checking out. -James |
From: Jason H. <jas...@gm...> - 2011-10-20 05:36:09
|
On 20 October 2011 13:30, James <vi...@ro...> wrote: > I also had issues with a certain package not correctly installing a > __init__.py in the folder. So I could import it via python > interpreter, but py2exe would fail to find it when it looked like it > was right there. Doesn't sound like this is the case, but worth > checking out. I had that problem with zope.interface (imported by Twisted, not me) and worked around it by putting "__init__.py" in site-packages/zope/. There's a bug about it in the issue tracker. - Jason |
From: Jason H. <jas...@gm...> - 2011-10-20 05:35:00
|
On 20 October 2011 13:22, Mark Hammond <mha...@sk...> wrote: >> I think that would mean it'd hit the ImportError branch. Okay, that makes sense to me now, but then I put some print statements in and did "import crcmod" from the Python console only to see both branches hit (ie. the ImportError *is* raised). > Before you added crcmod to packages, what did you find crcmod related in > your build\bdist.win32\winexe\collect-2.x directory created by py2exe? -- byte-compiling C:\Python26\lib\site-packages\crcmod\__init__.py to crcmod\__init__.pyc creating C:\Documents and Settings\jason_h\My Documents\Projects\OscUI\src\build\bdist.win32\winexe\collect-2.6\crcmod byte-compiling C:\Python26\lib\site-packages\crcmod\_crcfunpy.py to crcmod\_crcfunpy.pyc byte-compiling C:\Python26\lib\site-packages\crcmod\crcmod.py to crcmod\crcmod.pyc -- Also perhaps of interest is this: -- The following modules appear to be missing ['FCNTL', 'OpenSSL', 'System', 'System.IO.Ports', 'TERMIOS', '_crcfunext', '_zope_interface_coptimizations', 'clr', 'crcmod.crcmod', 'crcmod.predefined', 'dummy.Process', 'email.Generator', 'email.Iterators', 'gdk', 'predefined', 'resource', 'twisted.internet._sigchld', 'unix', 'glib.GError', 'glib.IOChannel', 'glib.IO_ERR', ...a tonne of other glib stuff] -- Cheers, Jason |
From: Mark H. <mha...@sk...> - 2011-10-20 05:38:14
|
On 20/10/2011 4:34 PM, Jason Heeris wrote: > On 20 October 2011 13:22, Mark Hammond<mha...@sk...> wrote: >>> I think that would mean it'd hit the ImportError branch. > > Okay, that makes sense to me now, but then I put some print statements > in and did "import crcmod" from the Python console only to see both > branches hit (ie. the ImportError *is* raised). It might be worth removing that exception clause completely - some other "unexpected" ImportError may be causing the problem, so that will let us see exactly why that ImportError is happening. Mark |
From: Jason H. <jas...@gm...> - 2011-10-20 07:02:49
|
On 20 October 2011 13:37, Mark Hammond <mha...@sk...> wrote: > It might be worth removing that exception clause completely - some other > "unexpected" ImportError may be causing the problem, so that will let us see > exactly why that ImportError is happening. Removed the clause, and imported crcmod in a console: >>> import crcmod Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python26\lib\site-packages\crcmod\__init__.py", line 9, in <module> from crcmod.crcmod import * ImportError: No module named crcmod >>> It just struck me that there *won't* be "crcmod.crcmod" to import, because the top-level "crcmod" won't be imported until the __init__.py is run. So the "except" clause is taken, and the usual rules about taking imports from the current directory should apply (I think... I'm not quite clear on the edge cases of Python's import mechanism). Anyway, after this change, but WITHOUT 'crcmod' in 'packages', the build log shows: -- [...snip] byte-compiling C:\Python26\lib\site-packages\crcmod\__init__.py to crcmod\__init__.pyc creating C:\Documents and Settings\jason_h\My Documents\Projects\OscUI\src\build\bdist.win32\winexe\collect-2.6\crcmod byte-compiling C:\Python26\lib\site-packages\crcmod\_crcfunpy.py to crcmod\_crcfunpy.pyc byte-compiling C:\Python26\lib\site-packages\crcmod\crcmod.py to crcmod\crcmod.pyc -- [more snip] The following modules appear to be missing ['FCNTL', 'OpenSSL', 'System', 'System.IO.Ports', 'TERMIOS', '_crcfunext', '_zope_interface_coptimizations', 'clr', 'crcmod.crcmod', 'crcmod.predefined', 'dummy.Process', -- [...] ...and I still get the import error upon running. WITH 'crcmod' in 'packages', it fails to build and the build log shows: -- [...snip] *** searching for required modules *** C:\Python26\lib\site-packages\py2exe\build_exe.py:16: DeprecationWarning: the sets module is deprecated import sets Traceback (most recent call last): File "setup.py", line 69, in <module> 'gtk/*.ui' File "C:\Python26\lib\distutils\core.py", line 152, in setup dist.run_commands() File "C:\Python26\lib\distutils\dist.py", line 975, in run_commands self.run_command(cmd) File "C:\Python26\lib\distutils\dist.py", line 995, in run_command cmd_obj.run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 243, in run self._run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 296, in _run self.find_needed_modules(mf, required_files, required_modules) File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 1342, in find_needed_modules mf.import_hook(package, None, ["*"]) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 719, in import_hook return Base.import_hook(self,name,caller,fromlist,level) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 141, in import_hook self.ensure_fromlist(m, fromlist) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 228, in ensure_fromlist self.ensure_fromlist(m, all, 1) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 233, in ensure_fromlist raise ImportError, "No module named " + subname ImportError: No module named crcmod.predefined -- - Jason |
From: Mikkel H. O. <sou...@sy...> - 2011-10-20 07:32:48
|
I had the exact same problem a couple of months ago. I never found a solution, but a work-around: I copied predefined.pyc to the directory where my application is (and where I invoke setup.py). Of course this is not really a desirable solution, but it let me build the exe/zip with py2exe, so it solved my problem. I would be happy to hear about it if you solve this. Quoting Jason Heeris <jas...@gm...>: > Version info: > Python 2.6.2 > PyGTK 2.22 > Twisted 10.2.0 > crcmod 1.7 > pywin32 214 > py2exe 0.6.9 > > I'm trying to build a PyGTK/Twisted app on WinXP, and the latest > stumbling block I've hit has been with crcmod (my setup.py is > attached). The exe builds fine, but I get this error when trying to > run it: > > -- > Traceback (most recent call last): > File "tasks.py", line 11, in <module> > File "models\programmer.pyc", line 6, in <module> > File "utils\flash.pyc", line 3, in <module> > File "crcmod\__init__.pyc", line 7, in <module> > ImportError: No module named predefined > -- > > The crcmod __init__.py has this code in it: > > -- > try: > from crcmod.crcmod import * > import crcmod.predefined > except ImportError: > # Make this backward compatible > from crcmod import * > import predefined > __doc__ = crcmod.__doc__ > -- > > Putting "crcmod.predefined" in the 'includes' or 'packages' hasn't > helped and I'm out of ideas. Are there any workarounds I can apply > here? I'd rather not hack up another module to work with py2exe, but > I'm not above doing it as a last resort. > > I realise crcmod has been brought up on the list before, but it > wasn't resolved. > > Cheers, > Jason > -- Mikkel Holm Olsen AKA Spaceman Spiff |
From: Mark H. <mha...@sk...> - 2011-10-20 12:26:43
|
On 20/10/2011 6:02 PM, Jason Heeris wrote: > On 20 October 2011 13:37, Mark Hammond<mha...@sk...> wrote: >> It might be worth removing that exception clause completely - some other >> "unexpected" ImportError may be causing the problem, so that will let us see >> exactly why that ImportError is happening. > > Removed the clause, and imported crcmod in a console: > >>>> import crcmod > Traceback (most recent call last): > File "<stdin>", line 1, in<module> > File "C:\Python26\lib\site-packages\crcmod\__init__.py", line 9, in<module> > from crcmod.crcmod import * > ImportError: No module named crcmod >>>> > > It just struck me that there *won't* be "crcmod.crcmod" to import, > because the top-level "crcmod" won't be imported until the __init__.py > is run. So the "except" clause is taken, and the usual rules about > taking imports from the current directory should apply (I think... I'm > not quite clear on the edge cases of Python's import mechanism). Yeah - that seems correct. But actually, I thought it was wrong :) As crcmod is importing you will find '"crcmod" in sys.modules' is True, but that import does indeed fail. So I wonder in what cases the ImportError is not thrown? Maybe py3.x - I don't have it on this laptop so can't check and it is getting late for tonight :) > > Anyway, after this change, but WITHOUT 'crcmod' in 'packages', the > build log shows: > > -- [...snip] > byte-compiling C:\Python26\lib\site-packages\crcmod\__init__.py to > crcmod\__init__.pyc > creating C:\Documents and Settings\jason_h\My > Documents\Projects\OscUI\src\build\bdist.win32\winexe\collect-2.6\crcmod > byte-compiling C:\Python26\lib\site-packages\crcmod\_crcfunpy.py to > crcmod\_crcfunpy.pyc > byte-compiling C:\Python26\lib\site-packages\crcmod\crcmod.py to > crcmod\crcmod.pyc > -- [more snip] > The following modules appear to be missing > ['FCNTL', 'OpenSSL', 'System', 'System.IO.Ports', 'TERMIOS', > '_crcfunext', '_zope_interface_coptimizations', 'clr', > 'crcmod.crcmod', 'crcmod.predefined', 'dummy.Process', That is basically expected - py2exe doesn't actually do the import, it just looks for import statements - IOW, it doesn't understand conditional imports. So the question seems to be why the "import predefined" works in Python but not in py2exe? If you can, it would be great to reproduce this. So far I've got the tiny: directory "foo": __init__.py: import sys print "have foo =", "foo" in sys.modules try: from foo.foo import hello except ImportError: from foo import hello foo.py: def hello(): print "hello there" Then: % python -c "import foo; foo.hello()" have foo = True hello there and as in your case, that ImportError branch is indeed taken for the same reason. But, given the time here and the laptop not even having py2exe locally installed, that is as far as I got - but if you (or anyone) can turn that into a failing py2exe program, I'll fix it - or at least determine a work-around :) Cheers, Mark |
From: Jason H. <jas...@gm...> - 2011-10-21 02:23:07
|
On 20 October 2011 20:26, Mark Hammond <mha...@sk...> wrote: > but if you (or anyone) can turn that > into a failing py2exe program, I'll fix it - or at least determine a > work-around :) Okay, you can see the code here: https://github.com/detly/Py2exe-Test At the moment it fails to build altogether, and it's probably a dumb mistake on my part. The build log shows: -- running py2exe creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build\bdist.win32 creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build\bdist.win32\winexe creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build\bdist.win32\winexe\collect-2.6 creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build\bdist.win32\winexe\bundle-2.6 creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\build\bdist.win32\winexe\temp creating C:\Documents and Settings\jason_h\My Documents\Projects\p2etest\dist *** searching for required modules *** C:\Python26\lib\site-packages\py2exe\build_exe.py:16: DeprecationWarning: the sets module is deprecated import sets Traceback (most recent call last): File "setup.py", line 15, in <module> 'includes': '', File "C:\Python26\lib\distutils\core.py", line 152, in setup dist.run_commands() File "C:\Python26\lib\distutils\dist.py", line 975, in run_commands self.run_command(cmd) File "C:\Python26\lib\distutils\dist.py", line 995, in run_command cmd_obj.run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 243, in run self._run() File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 296, in _run self.find_needed_modules(mf, required_files, required_modules) File "C:\Python26\lib\site-packages\py2exe\build_exe.py", line 1297, in find_needed_modules mf.import_hook(mod) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 719, in import_hook return Base.import_hook(self,name,caller,fromlist,level) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 136, in import_hook q, tail = self.find_head_package(parent, name) File "C:\Python26\lib\site-packages\py2exe\mf.py", line 204, in find_head_package raise ImportError, "No module named " + qname ImportError: No module named -- Cheers, Jason |
From: Mark H. <mha...@sk...> - 2011-10-21 06:47:50
|
On 21/10/2011 1:22 PM, Jason Heeris wrote: > On 20 October 2011 20:26, Mark Hammond<mha...@sk...> wrote: >> but if you (or anyone) can turn that >> into a failing py2exe program, I'll fix it - or at least determine a >> work-around :) > > Okay, you can see the code here: https://github.com/detly/Py2exe-Test > > At the moment it fails to build altogether, and it's probably a dumb > mistake on my part. The build log shows: ... I've pushed a clone at https://github.com/mhammond/Py2exe-Test which demonstrates the same problem. Sadly though, the problem seems a subtle issue in py2exe's mf.py and I'm struggling to find a work-around. The problem goes something like this: * The dir layout has foo/__init__.py, foo/foo.py and foo/problemchild.py * The first import in foo/__init__.py is: import foo.problemchild (which FWIW, does end up working in py3k, which explains that ImportError block) * py2exe is now looking for 'foo.foo.problemchild' given that import is in the 'foo' package. It (correctly) fails to find it. This is where it gets subtle - I think what is happening is that "foo.problemchild" is marked as not existing in the context of a 'foo' package and things go pear-shaped - at a later stage when looking for the real 'foo.problemchild' that context seems to have been ignored, so it doesn't bother to look - it already knows a 'foo.problemchild' doesn't exist. The same basic thing happens whether that "packages" option is used or not - it is just that when you specify it in "packages" the failure to locate it is fatal at build time, whereas if you don't specify it the failure is at runtime - but both cases seem to have the same root cause. I'm out of time for now to keep looking at this, and realistically will not get back to it for at least a few days. And-I-thought-it-would-turn-out-to-be-relatively-simple-ly, Mark |
From: Jason H. <jas...@gm...> - 2011-10-21 06:56:07
|
On 21 October 2011 14:47, Mark Hammond <mha...@sk...> wrote: > I'm out of time for now to keep looking at this, and realistically will not > get back to it for at least a few days. Oh well, I appreciate the effort whenever you get around to it :) In the meantime, I might see if I can hack it into some conforming shape for my purposes (like I did with zope.interface). — Jason |
From: Mark H. <ski...@gm...> - 2011-10-21 06:59:18
|
On 21/10/2011 5:47 PM, Mark Hammond wrote: ... > Sadly though, the problem seems a subtle > issue in py2exe's mf.py and I'm struggling to find a work-around. Actually, I just found one :) If you add the crcmod mod directory itself (not the parent - the dir with __init__.py) to the python path and remove crcmod from packages in setup.py, things should work. Eg, using that updated example: * remote packages from setup.py * set PYTHONPATH=foo It works fine. The 'foo.problemchild' still fails, then the 'import problemchild' in foo/__init__.py winds up looking in the foo directory and finds it. So 'problemchild' is just found and used as a regular Python module, not as part of a package - but that works fine given how the imports are laid out. You could probably even have setup.py modify sys.path programatically to have the hack fully automated, but I didn't try that... HTH, Mark |
From: Jason H. <jas...@gm...> - 2011-10-24 07:38:23
|
On 21 October 2011 14:58, Mark Hammond <ski...@gm...> wrote: > You could probably even have setup.py modify sys.path programatically to > have the hack fully automated, but I didn't try that... Putting this snippet in setup.py works: import crcmod CRCMOD_DIR = os.path.dirname(crcmod.__file__) sys.path.insert(1, CRCMOD_DIR) Thanks for your help! — Jason |