====== 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 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 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 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 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 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. ([[https://github.com/pypa/setuptools/blob/main/CHANGES.rst#v6700|changelog]]), but will result in errors for all newer versions of setuptools. ===== Solution ===== Install latest release of Lime CRM Server: [[releases:pro:|Lime CRM Server Release Notes]]