Ned Deily added the comment: Sorry, I've finally gotten around to taking a longer look at this and it seems that freeze support is kind of a mess. First, it looks like some of the issues you ran into were fixed in 3.4.1 (changes associated with Issue11824 and Issue16047). Unfortunately, one of them introduced a new problem that I've documented in Issue23405 (and which can be worked around by editing the freeze Makefile to use $(LIBRARY) instead of $(LDLIBRARY)). But there appear to be still more basic problems when trying to use freeze with OS X framework builds such as provided by the python.org installers for OS X.
1. freeze makes use of the LINKFORSHARED configuration variable when building the frozen executable. For OS X non-framework Python builds, it typically looks like this: LINKFORSHARED="-Wl,-stack_size,1000000 -framework CoreFoundation" For framework builds, it also includes the relative framework file path: LINKFORSHARED="-Wl,-stack_size,1000000 -framework CoreFoundation Python.framework/Versions/3.4/Python" The path is not useful as-is outside of the Python build itself and, by having a path here, the OS X framework configuration seems to be an exception to most other platforms, causing problems here with freeze and elsewhere (there have been other complaints about this usage). As noted, one can workaround this problem by editing the freeze-produced Makefile. But that leads to another problem. 2. Unlike for non-shared and shared Python builds, OS X Python framework builds do not include the Python library as a static archive file in the config-* directory (or anywhere else for that matter). Instead, symbolic links are created in the directory to the framework shared library. shared build $ ls -l ./lib/python3.4/config-3.4dm/lib* -rw-r-----+ 1 nad pyd 9514552 Feb 7 16:57 libpython3.4dm.a framework build $ ls -l ./lib/python3.4/config-3.4dm/lib* lrwxr-x--- 1 nad pyd 21 Feb 7 17:41 libpython3.4.a -> ../../../Python lrwxr-x--- 1 nad pyd 21 Feb 7 17:41 libpython3.4.dylib -> ../../../Python lrwxr-x--- 1 nad pyd 21 Feb 7 17:41 libpython3.4dm.a -> ../../../Python lrwxr-x--- 1 nad pyd 21 Feb 7 17:41 libpython3.4dm.dylib -> ../../../Python This difference causes problems when linking the frozen executable: because the framework build configuration presents a dynamic shared lib, the resulting executable has a runtime dependency on the shared lib: % otool -L hello hello: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1152.0.0) /Library/Frameworks/Python.framework/Versions/3.4/Python (compatibility version 3.4.0, current version 3.4.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) and the frozen executable cannot be run on another system which does not have a compatible version of Python installed. I don't know of an easy freeze build workaround for this. I think the correct solution for freeze is to always only provide the static library in the config* directory for all Python build configurations. But I'm not sure whether there are any compelling reasons to provide shared lib links as well for other users of the config* directory (e.g. for embedding Python); if so, the static and dynamic libs may have to have distinct names. Ronald, do you have other thoughts on this? At the moment, I think the safest solution for using freeze on OS X is to use a non-shared, non-framework build of Python, which probably means building Python 3.4 yourself. ---------- nosy: +ronaldoussoren _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue21502> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com