Table of Contents

Lime CRM Services Fails to Start After Server or Solution Installation

Issue

After upgrading Lime CRM Server or installing a solution Lime CRM Services fails to start and nothing is written to the log.

To see what the issue is. The service needs to be started with the Command Prompt. In this example Lime CRM Web Server.

  1. Open a Command Prompt as administrator.
  2. Activate Lime CRM Server Python venv:
    "C:\Program Files (x86)\Lundalogik\Python3\Scripts\activate"
  3. Run:
    lime-webserver

The exception 'InvalidRequirement' is thrown. Here's an example:

Traceback (most recent call last):
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init_.py”, line 3039, in _dep_map
return self._dep_map
File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init.py", line 2835, in getattr
raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging\requirements.py”, line 35, in init
parsed = parse_requirement(requirement_string)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_parser.py”, line 64, in parse_requirement
return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_parser.py”, line 82, in _parse_requirement
url, specifier, marker = _parse_requirement_details(tokenizer)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_parser.py”, line 120, in _parse_requirement_details
specifier = _parse_specifier(tokenizer)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_parser.py”, line 209, in _parse_specifier
tokenizer.consume(“WS”)
File “C:\Program Files\Python37\Lib\contextlib.py”, line 119, in exit
next(self.gen)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_tokenizer.py”, line 185, in enclosing_tokens
span_start=open_position,
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging_tokenizer.py”, line 166, in raise_syntax_error
span=span,
pkg_resources.extern.packaging._tokenizer.ParserSyntaxError: Expected closing RIGHT_PARENTHESIS
pytest (>=3.0.0<4.0.0) ; extra == ‘develop’
~~~~~~~~^

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “C:\Program Files\Python37\Lib\runpy.py”, line 193, in run_module_as_main
“main”, mod_spec)
File “C:\Program Files\Python37\Lib\runpy.py”, line 85, in run_code
exec(code, run_globals)
File "C:\PROGRA~2\LUNDAL~1\Python3\Scripts\lime-webserver-debug.exe_main.py", line 7, in
File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_webserver_main.py", line 18, in run_appserver_in_debug_mode
config = lime_config.load_config(“Web Server”)
File “c:\progra~2\lundal~1\python3\lib\site-packages\elasticapm\traces.py”, line 1066, in decorated
return func(*args, **kwds)
File “c:\progra~2\lundal~1\python3\lib\site-packages\lime_config_init_.py”, line 103, in load_config
current_cfg = get_config()
File “c:\progra~2\lundal~1\python3\lib\site-packages\lime_config_init_.py”, line 92, in
service_name, default_config, entry_points, plugin_entry_points
File “c:\progra~2\lundal~1\python3\lib\site-packages\lime_config_init_.py”, line 257, in build_default_config
cfg = merge_configs_from_plugins(cfg, plugin_entry_points)
File “c:\progra~2\lundal~1\python3\lib\site-packages\lime_config_init_.py”, line 346, in merge_configs_from_plugins
for plugin_cfg in plugin_configs:
File “c:\progra~2\lundal~1\python3\lib\site-packages\lime_config_init_.py”, line 43, in
return (ep.resolve() for ep in eps)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init_.py”, line 2483, in resolve
module = import(self.module_name, fromlist=[‘name’], level=0)
File “c:\progra~2\lundal~1\python3\lib\site-packages\limepkg_engage_init_.py”, line 5, in
from .variables import PACKAGE_VERSION, PACKAGE_IDENTIFIER
File “c:\progra~2\lundal~1\python3\lib\site-packages\limepkg_engage\variables.py”, line 6, in
PACKAGE_VERSION = pkg_resources.require(PACKAGE_IDENTIFIER)[0].version
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init_.py”, line 956, in require
needed = self.resolve(parse_requirements(requirements))
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init_.py”, line 820, in resolve
new_requirements = dist.requires(req.extras)[::-1]
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init_.py”, line 2755, in requires
dm = self.dep_map
File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init.py", line 3041, in _dep_map
self.__dep_map = self.compute_dependencies()
File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init.py", line 3051, in compute_dependencies
reqs.extend(parse_requirements(req))
File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_init.py", line 3104, in init
super(Requirement, self).init(requirement_string)
File “c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources_vendor\packaging\requirements.py”, line 37, in init
raise InvalidRequirement(str(e)) from e
pkg_resources.extern.packaging.requirements.InvalidRequirement: Expected closing RIGHT_PARENTHESIS
pytest (>=3.0.0<4.0.0) ; extra == ‘develop’
~~~~~~~~^

Why does this happen?

Old versions of setuptools accepted requirements to be listed in a non PEP440 compliant way. Below you can see two examples of invalid requirement definitions:

Invalid requirement definition for pytz:

"pytz>dev" # The version "dev" is not PEP440 compliant

Invalid requirement definition for pytest:

"pytest>=3.0.0<4.0.0" # A "," is missing between "3.0.0" and "<"

The definitions above are considered valid in any version of setuptools<67.0.0. (changelog), but will result in errors for all newer versions of setuptools.

Solution

Solution to this issue is to downgrade setuptools to version lower than 67.0.0 in the Lime CRM Python venv.

  1. Open a Command Prompt as administrator.
  2. Activate Lime CRM Server Python venv:
    "C:\Program Files (x86)\Lundalogik\Python3\Scripts\activate"
  3. Downgrade setuptools:
    python -m pip install "setuptools<67.0.0"
  4. Start all Lime CRM Services.