[FIX] namespace packages: move from pkg_resources-style to pkg_util

Deprecates the previous pkg_resources-style packages. Our use was
not entirely spec compliant, and it broke with setuptools 31.
More information in https://github.com/odoo/odoo/pull/15718

Instead, use the pkgutil-style namespace packages.
This is spec compliant as long as all other distributions providing
odoo.addons use PEP 420 namespace packages (i.e. no __init__.py).
So this mechanism fully works on Python 3 only, but does not break
anything on Python 2.

See also:
https://packaging.python.org/guides/packaging-namespace-packages/#pkgutil-style-namespace-packages

Closes #19517
Fixes #15718
16.0
Stéphane Bidoul (ACSONE) 2017-09-17 16:44:02 +02:00 committed by Olivier Dony
parent 5d51950b59
commit 8bf06adc8d
No known key found for this signature in database
GPG Key ID: CD556E25E8A6D0D4
4 changed files with 10 additions and 3 deletions

View File

@ -2,7 +2,6 @@
# set server timezone in UTC before time module imported
__import__('os').environ['TZ'] = 'UTC'
__import__('pkg_resources').declare_namespace('odoo.addons')
import odoo
if __name__ == "__main__":

View File

@ -3,6 +3,12 @@
""" OpenERP core library."""
#----------------------------------------------------------
# odoo must be a namespace package for odoo.addons to become one too
# https://packaging.python.org/guides/packaging-namespace-packages/
#----------------------------------------------------------
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
#----------------------------------------------------------
# Running mode flags (gevent, prefork)
#----------------------------------------------------------

View File

@ -14,4 +14,7 @@ This module also conveniently reexports some symbols from odoo.modules.
Importing them from here is deprecated.
"""
__import__('pkg_resources').declare_namespace(__name__)
# make odoo.addons a namespace package, while keeping this __init__.py
# present, for python 2 compatibility
# https://packaging.python.org/guides/packaging-namespace-packages/
__path__ = __import__('pkgutil').extend_path(__path__, __name__)

View File

@ -2,7 +2,6 @@
# set server timezone in UTC before time module imported
__import__('os').environ['TZ'] = 'UTC'
__import__('pkg_resources').declare_namespace('odoo.addons')
import odoo
if __name__ == "__main__":