Can't get Creme to install - need help please.
#1
Hi Everyone,

I am new here and somewhat new to coding.  I have a project that could make use of a great CRM and would like to explore the capabilities of Creme. 

I have been trying to get Creme installed on a local Fedora laptop, but without success.  The instructions are likely very clear to someone who knows Django well, but unfortunately not good enough for a Django noob (like me).

As mentioned, I am running Fedora (38) on a Thinkpad laptop (64G RAM, 6TB SSD, Xeon processor).

I've created a virtual env under Python 3.9 (also tried 3.11, but that didn't work either).

In my project root directory (CREME) I have two subdirectories, creme-crm (having installed from ZIP file) and env3.9.16 (the virtual env).

Changing directory into creme-crm and then running pip install -e .[pgsql] works for a bit and then produces the following error:
...
...
Collecting certifi>=2017.4.17 (from requests>=2.24.0->pyHanko>=0.12.1->xhtml2pdf==0.2.9->creme-crm==2.5a1)
  Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
Collecting pycairo>=1.20.0 (from rlPyCairo<1,>=0.2.0->reportlab>=3.5.53->xhtml2pdf==0.2.9->creme-crm==2.5a1)
  Using cached pycairo-1.23.0.tar.gz (344 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting pycparser (from cffi>=1.12->cryptography>=3.3.1->pyHanko>=0.12.1->xhtml2pdf==0.2.9->creme-crm==2.5a1)
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Building wheels for collected packages: creme-crm, pycairo
  Building editable for creme-crm (pyproject.toml) ... done
  Created wheel for creme-crm: filename=creme_crm-2.5a1-0.editable-py3-none-any.whl size=7967 sha256=d11221cb01dc9dee3befca99e1a5131326d11f68cbb859390f9f524d6b14502c
  Stored in directory: /tmp/pip-ephem-wheel-cache-88erz_8o/wheels/4e/f2/31/690ba39ad6f36fa1fb514effc290a0cb58a8e97629719f90f5
  Building wheel for pycairo (pyproject.toml) ... error
  error: subprocess-exited-with-error
 
  × Building wheel for pycairo (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [15 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-39
      creating build/lib.linux-x86_64-cpython-39/cairo
      copying cairo/__init__.py -> build/lib.linux-x86_64-cpython-39/cairo
      copying cairo/__init__.pyi -> build/lib.linux-x86_64-cpython-39/cairo
      copying cairo/py.typed -> build/lib.linux-x86_64-cpython-39/cairo
      running build_ext
      Package cairo was not found in the pkg-config search path.
      Perhaps you should add the directory containing `cairo.pc'
      to the PKG_CONFIG_PATH environment variable
      Package 'cairo', required by 'virtual:world', not found
      Command '['pkg-config', '--print-errors', '--exists', 'cairo >= 1.15.10']' returned non-zero exit status 1.
      [end of output]
 
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pycairo
Successfully built creme-crm
Failed to build pycairo
ERROR: Could not build wheels for pycairo, which is required to install pyproject.toml-based projects



So have been assuming I need to learn something obvious but after 2 and half days it isn't obvious (and I see that many other people are having similar challenges on other Django projects not related to Creme.

Really hoping someone can provide me a bit guidance on how to get this running, please.

Thank you


Pièces jointes Miniature(s)
   
  Répondre
#2
Hi,

some days ago a new dependence appeared in a Python package we use to generate PDF files: Cairo.
I've fixed the README file of the future version 2.4.4 of Creme, but you can already install the development package for "cairo" to fix the issue.
On Debian/Ubuntu I installed the system package (i.e. apt-get) "libcairo-dev" (sorry I don't know its name on Fedora) ; once it is installed you can try to resume the installation of Python packages with 'pip'.

Have a good day!
  Répondre
#3
Thank you so much for this. I shall try this and let you know how it goes.

In any case, I very much appreciate your help here.
  Répondre
#4
(26-05-2023, 05:39)Technowonk a écrit : Thank you so much for this.  I shall try this and let you know how it goes.

In any case, I very much appreciate your help here.

After a bit of research for Fedora the package is called "cairo-devel"  and is installed using
"sudo dnf install cairo-devel"  (without the quotes)

I missed the instruction to have these all already installed and now see that if I had done this first (properly as per the instruction) I would not have had the long delay together with the frustration.  On the other hand, I have now learned more about this process.

For others getting this running on Fedora also note that:
python-dev => python-devel
libpq-dev => libpq-devel
libjpeg-dev => libjpeg-devel


But I'm on to a new challenge.

I have created a new directory and within it I have create a new virtual environment using Python 3.11.3.  I then installed Creme again using "pip install creme-crm" (and everything appears to have installed without error). No postgresql this time (I will figure that out later). 

I then ran "creme creme_start_project my_project" which then instructed me to edit the settings.py file in my_project/my_project.  The only change I made was to the Time Zone Settings.

Now when running "creme migrate --settings=my_project.settings"  I get the following:

----------------------------------------------------------------------------------------------------------------------
/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/http/request.py:1: DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
  import cgi
/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/utils/encoding.py:266: DeprecationWarning: Use setlocale(), getencoding() and getlocale() instead
  encoding = locale.getdefaultlocale()[1] or 'ascii'
:283: DeprecationWarning: the load_module() method is deprecated and slated for removal in Python 3.12; use exec_module() instead
Traceback (most recent call last):
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/bin/creme", line 8, in
    sys.exit(execute())
            ^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/creme/manage.py", line 39, in execute
    execute_from_command_line(argv)
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/commands/migrate.py", line 75, in handle
    self.check(databases=[database])
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/management/base.py", line 419, in check
    all_issues = checks.run_checks(
                ^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/checks/registry.py", line 76, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/checks/urls.py", line 40, in check_url_namespaces_unique
    all_namespaces = _load_all_namespaces(resolver)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/core/checks/urls.py", line 57, in _load_all_namespaces
    url_patterns = getattr(resolver, 'url_patterns', [])
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                        ^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/urls/resolvers.py", line 602, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                      ^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/utils/functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                        ^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/urls/resolvers.py", line 595, in urlconf_module
    return import_module(self.urlconf_name)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "", line 1206, in _gcd_import
  File "", line 1178, in _find_and_load
  File "", line 1149, in _find_and_load_unlocked
  File "", line 690, in _load_unlocked
  File "", line 940, in exec_module
  File "", line 241, in _call_with_frames_removed
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/creme/urls.py", line 5, in
    from django.contrib.auth import views as auth_views
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/contrib/auth/views.py", line 10, in
    from django.contrib.auth.forms import (
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/contrib/auth/forms.py", line 11, in
    from django.contrib.auth.tokens import default_token_generator
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/contrib/auth/tokens.py", line 117, in
    default_token_generator = PasswordResetTokenGenerator()
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/contrib/auth/tokens.py", line 18, in __init__
    self.secret = self.secret or settings.SECRET_KEY
                                ^^^^^^^^^^^^^^^^^^^
  File "/home/technowonk/dev/CRM/CREME-TEST2/env3.11.3/lib64/python3.11/site-packages/django/conf/__init__.py", line 90, in __getattr__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
----------------------------------------------------------------------------------------------------------------------

Thank you for your help - very much appreciate any feedback towards getting this package running.

Sending my best wishes for a great week ahead!
  Répondre
#5
Hi,


Citation :For others getting this running on Fedora also note that:
python-dev => python-devel
libpq-dev => libpq-devel
libjpeg-dev => libjpeg-devel


Thanks, I'll improve the tutorial with these information (the tutorial is currently only in French but I'll translate it to English with the release of Creme 2.5).


Citation :django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.


As indicated in README, the file 'settings.py' generated in your project's folder contains all the information about how to fill it. It notably talks about 3 variables with are very important to set (before continuing the installation) : ADMINS, SECRET_KEY & DATABASES.

Best wishes !
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)