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.
- Open a Command Prompt as administrator.
- Activate Lime CRM Server Python venv:
"C:\Program Files (x86)\Lundalogik\Python3\Scripts\activate"
- 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.
- Open a Command Prompt as administrator.
- Activate Lime CRM Server Python venv:
"C:\Program Files (x86)\Lundalogik\Python3\Scripts\activate"
- Downgrade setuptools:
python -m pip install "setuptools<67.0.0"
- Start all Lime CRM Services.