#8062 closed defect (fixed)
Trac can't be installed as zip-safe egg
| Reported by: | Christian Boos | Owned by: | Christian Boos |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.12 |
| Component: | general | Version: | 0.12dev |
| Severity: | normal | Keywords: | setuptools egg i18n |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description
This comes as a follow-up to #7877, which was about a problem in the TracMercurial plugin, where the line:
pkg_resources.resource_filename(__name__, '../locale')
would fail when the plugin was installed as an egg.
Now Trac itself has the same construction in trac/util/text.py, and it seems to have exactly the same issue:
- when Trac egg is flagged zip-unsafe, it gets extracted in site-packages when
easy_installed, then thepkg_resources.resource_filename(__name__, '../locale')call works fine - when Trac egg is as zip-safe, easy_install simply copies the egg in site-packages , and then Trac fails with a KeyError:
Traceback (most recent call last): File "build\bdist.win32\egg\trac\web\api.py", line 372, in send_error translation.activate(self.locale, env.path) File "build\bdist.win32\egg\trac\util\translation.py", line 250, in activate translations.activate(locale, env_path) File "build\bdist.win32\egg\trac\util\translation.py", line 114, in activate locale_dir = pkg_resources.resource_filename(__name__, '../locale') File "C:\Workspace\src\trac\dependencies\setuptools\pkg_resources.py", line 841, in resource_filename self, resource_name File "C:\Workspace\src\trac\dependencies\setuptools\pkg_resources.py", line 1311, in get_resource_filename return self._extract_resource(manager, zip_path) File "C:\Workspace\src\trac\dependencies\setuptools\pkg_resources.py", line 1322, in _extract_resource zip_stat = self.zipinfo[zip_path] KeyError: 'trac\\util\\..\\locale'
Attachments (1)
Change History (5)
by , 17 years ago
| Attachment: | t8062-zip_safe-install-r7886.diff added |
|---|
comment:1 by , 17 years ago
Now I wonder, the zip_safe=False setting dates back from the SetupTools branch integration, so maybe there are other reasons why the Trac can't be made zip_safe? But in my tests with tracd, everything seemed to work fine after that change.
Well, everything but an issue with the locale selector being None, cascading in several bad effects. That was fixed by the change:
t = Translations.load(locale_dir, locale or 'en_US')
which you can find commented out in the patch. Once I re-selected explicitly a language in the preference, the need for that change went away. Anyway, this seems to be a different issue.
comment:2 by , 16 years ago
Parts of the patch committed in r8494.
zip_safe was still left to False in setup.py though, as I don't know if changing that wouldn't introduce some unexpected issue…
comment:3 by , 16 years ago
| Keywords: | setuptools added |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Well, if there's any problem found with Trac installed as a zipped .egg, please let us know and reopen ;-)
Zip-safe flag enabled in [8787].
comment:4 by , 16 years ago
| Owner: | set to |
|---|



make Trac installable as zip_safe