Table of Contents

Lime CRM Server Installation Fails to Install lime-webserver.exe

Issue

Lime CRM Server installation fails when trying to install lime-webserver.exe with 'InvalidRequirement' exception. Example from Lime CRM Server installation log:

11:52:51: INFO: Installing lime-webserver.exe service...
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
    pytz (>dev)
         ~^
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.exe\__main__.py", line 7, in <module>  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_webserver\__main__.py", line 67, in main
    lime_config.load_config('Web Server')
  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_config\__init__.py", line 90, in load_config
    current_cfg = get_config()
  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_config\__init__.py", line 81, in <lambda>    service_name, default_config, entry_points, plugin_entry_points),
  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_config\__init__.py", line 169, in build_default_config
    cfg = merge_configs_from_packages(cfg, entry_points)
  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_config\__init__.py", line 253, in merge_configs_from_packages
    return reduce(merge_dicts, entry_points(), cfg)
  File "c:\progra~2\lundal~1\python3\lib\site-packages\lime_config\__init__.py", line 44, in <genexpr>    return (ep.load() for ep in eps)
  File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources\__init__.py", line 2476, in load
    self.require(*args, **kwargs)
  File "c:\progra~2\lundal~1\python3\lib\site-packages\pkg_resources\__init__.py", line 2499, in require
    items = working_set.resolve(reqs, env, installer, extras=self.extras)
  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
    pytz (>dev)
         ~^
Traceback (most recent call last):
  File "C:\Program Files (x86)\Lundalogik\LIME Pro Server\webserver\\install.py", line 1323, in <module>    sys.exit(main())
  File "C:\Program Files (x86)\Lundalogik\LIME Pro Server\webserver\\install.py", line 67, in main
    install()
  File "C:\Program Files (x86)\Lundalogik\LIME Pro Server\webserver\\install.py", line 104, in install
    install_webserver_service()
  File "C:\Program Files (x86)\Lundalogik\LIME Pro Server\webserver\\install.py", line 671, in install_webserver_service
    _install_service_from_exe('lime-webserver.exe')
  File "C:\Program Files (x86)\Lundalogik\LIME Pro Server\webserver\\install.py", line 988, in _install_service_from_exe
    subprocess.check_call(cmd)
  File "C:\Program Files\Python37\Lib\subprocess.py", line 363, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['C:\\PROGRA~2\\LUNDAL~1\\Python3\\Scripts\\lime-webserver.exe', '--username', 'lime-service-user', '--password', '*******', '--startup', 'auto', 'install']' returned non-zero exit status 1.
Installation failed...
Traceback (most recent call last):
  File "C:\Users\lime_support\AppData\Local\Temp\RarSFX0\\deploy.py", line 194, in <module>    sys.exit(main())
  File "C:\Users\lime_support\AppData\Local\Temp\RarSFX0\\deploy.py", line 35, in main
    raise e
  File "C:\Users\lime_support\AppData\Local\Temp\RarSFX0\\deploy.py", line 30, in main
    perform_install()
  File "C:\Users\lime_support\AppData\Local\Temp\RarSFX0\\deploy.py", line 165, in perform_install
    "Failed to call install script. Return code: {}".format(res))
Exception: Failed to call install script. Return code: 9999
Installation failed...

Why Does This Happen?

During the installation time of Lime CRM Server, a virtualenv is created. Unfortunately, it always installs the latest version of setuptools in the venv.

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

Install latest release of Lime CRM Server: Lime CRM Server Release Notes