memgraph / gqlalchemy

GQLAlchemy is a library developed with the purpose of assisting in writing and running queries on Memgraph. GQLAlchemy supports high-level connection to Memgraph as well as modular query builder.

Home Page:https://pypi.org/project/gqlalchemy/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[BUG] : undefined symbol: `EVP_PKEY_base_id` (in `mgclient.cpython-39-x86_64-linux-gnu.so`)

Tim-K-DFW opened this issue · comments

commented

Memgraph version

v2.11.0

Environment

  • Linux 20.04 LTS,
  • conda with pip, clean environment with the only thing installed being gqlalchemy (using pip install gqlalchemy)
  • memgraph running in docker (docker run --name memgraph -p 7687:7687 -p 7444:7444 -p 3000:3000 memgraph/memgraph-platform)

Describe the bug

Fail to import, see log below; same thing happens whether memgraph is running or not.

To Reproduce

import gqlalchemy

Expected behavior

To import.

Logs

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[4], line 1
----> 1 import gqlalchemy

File ~/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/__init__.py:34
     19 from gqlalchemy.models import (  # noqa F401
     20     MemgraphConstraintExists,
     21     MemgraphConstraintUnique,
   (...)
     31     Field,
     32 )
     33 from gqlalchemy.disk_storage import SQLitePropertyDatabase  # noqa F401
---> 34 from gqlalchemy.instance_runner import (  # noqa F401
     35     DockerImage,
     36     MemgraphInstanceBinary,
     37     MemgraphInstanceDocker,
     38     wait_for_docker_container,
     39     wait_for_port,
     40 )
     41 from gqlalchemy.exceptions import GQLAlchemyError, GQLAlchemyWarning  # noqa F401
     43 from gqlalchemy.query_builders import (  # noqa F401
     44     neo4j_query_builder,
     45     memgraph_query_builder,
     46     memgraph_query_builder as query_builder,
     47 )

File ~/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/instance_runner.py:35
     27 import psutil
     29 from gqlalchemy.exceptions import (
     30     GQLAlchemyWaitForConnectionError,
     31     GQLAlchemyWaitForDockerError,
     32     GQLAlchemyWaitForPortError,
     33     raise_if_not_imported,
     34 )
---> 35 from gqlalchemy.vendors.memgraph import Memgraph
     38 MEMGRAPH_DEFAULT_BINARY_PATH = "/usr/lib/memgraph/memgraph"
     39 MEMGRAPH_DEFAULT_PORT = 7687

File ~/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/vendors/memgraph.py:19
     16 import sqlite3
     17 from typing import List, Optional, Union
---> 19 from gqlalchemy.connection import Connection, MemgraphConnection
     20 from gqlalchemy.disk_storage import OnDiskPropertyDatabase
     21 from gqlalchemy.exceptions import (
     22     GQLAlchemyError,
     23     GQLAlchemyFileNotFoundError,
     24     GQLAlchemyOnDiskPropertyDatabaseNotDefinedError,
     25     GQLAlchemyUniquenessConstraintError,
     26 )

File ~/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/connection.py:18
     15 from abc import ABC, abstractmethod
     16 from typing import Any, Dict, Iterator, Optional
---> 18 import mgclient
     19 from neo4j import GraphDatabase
     20 from neo4j.graph import Node as Neo4jNode

ImportError: /home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages/mgclient.cpython-39-x86_64-linux-gnu.so: undefined symbol: EVP_PKEY_base_id

Additional context Add any other context about the problem here.

Hi @Tim-K-DFW, can you try pip install GQLAlchemy==1.4.1 until we detect if this is a bug related to latest release?
Btw as far as I can see, you're using Python 3.9?

commented

Hi Katarina, thank you for the quick response!

  • Same result with 1.4.1
  • Yes, python 3.9.16.

Did you experience any issues when installing with pip?
Also when you installed can you confirm installation is okay by running pip show gqlalchemy and provide output?
P.S. I see you are using Linux OS but is this a virtual machine or not? Wondering about your device architecture, is it ARM or AMD?

commented
  1. The only issue first time was pip complaining of cmake missing, so I installed that, and then gqlalchemy installed with no problems.

  2. pip show gqlalchemy gives:

Python 3.9.16
(memgraph) t@DESKTOP-KHJBONB:~/ro5_wsl/memgraph$ pip show gqlalchemy
Name: gqlalchemy
Version: 1.4.1
Summary: GQLAlchemy is a library developed to assist with writing and running queries in Memgraph.
Home-page: https://github.com/memgraph/gqlalchemy
Author: Bruno Sacaric
Author-email: bruno.sacaric@memgraph.com
License: Apache-2.0
Location: /home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages
Requires: adlfs, dacite, docker, neo4j, networkx, numpy, psutil, pydantic, pymgclient
Required-by:
(memgraph) t@DESKTOP-KHJBONB:~/ro5_wsl/memgraph$
  1. This is WSL2 on a Windows 10 machine, standard Intel CPU (AMD architecture as I understand).

Can you remove that installation, install all necessary prerequisites for GQLAlchemy (that is, pymgclient) and then try reinstalling it?

commented

I did:

  • new conda env with python 3.9.16
  • sudo apt install python3-dev cmake make gcc g++ libssl-dev (from your link)
  • pip3 install --user pymgclient (from your link)
  • pip install GQLAlchemy==1.4.1

Same result:

$ python
Python 3.9.16 (main, May 15 2023, 23:46:34)
[GCC 11.2.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gqlalchemy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/__init__.py", line 34, in <module>
    from gqlalchemy.instance_runner import (  # noqa F401
  File "/home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/instance_runner.py", line 31, in <module>
    from gqlalchemy.vendors.memgraph import Memgraph
  File "/home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/vendors/memgraph.py", line 19, in <module>
    from gqlalchemy.connection import Connection, MemgraphConnection
  File "/home/t/miniconda3/envs/memgraph/lib/python3.9/site-packages/gqlalchemy/connection.py", line 18, in <module>
    import mgclient
ImportError: /home/t/.local/lib/python3.9/site-packages/mgclient.cpython-39-x86_64-linux-gnu.so: undefined symbol: EVP_PKEY_base_id
>>>

I think that might be related to the mismatch of the OpenSSL version. Can you tell me which version you have?

commented

image

Are you sure that conda env uses that OpenSSL by default? This reminds me of the closed issue on the pymgclient repository.

commented

Do you happen to know how I can check this?

commented

(I mean, pip show openssl in this environment doesn't show any versions of openssl installed).

image

Can you try installing the pymgclient prerequisites in conda env with pip? The steps in conda env would be:

pip3 install python3-dev cmake make gcc g++ libssl-dev
pip3 install pymgclient
pip3 install gqlalchemy==1.4.1
commented

ERROR: Invalid requirement: 'g++' 😬 I googled a few solution options but not sure what exactly you had in mind.

My mistake on pip side. But the issue you're facing should be related to conda. I will do more research on what happened tomorrow and get back to you. Meanwhile, I recommend you read the issue I provided that might help and see why OpenSSL is not visible in your conda env.

Can you try installing gqlalchemy without conda, to verify the assumption?

commented

YES! In vanilla python, it's importing with no issues. This has to be some Conda stuff. Thank you so much!

No problem, I'm glad to help and happy it's working for you now! I will leave this issue open to resolve conda issues 😄

Investigated the issue, you are probably having locally old version of pymgclient. Clean pymgclient from global path (pip uninstall pymgclient gqlalchemy), activate your conda environmen and install ONLY gqlalchemy (pip install gqlalchemy). You should see that pymgclient 1.3.1 is being built while installing gqlalchemy. No need to install pymgclient before gqlalchemy, we have wrong instructions in README, we will fix it.

@Tim-K-DFW let us know if you decide to try out Conda env again and verify if what @as51340 provided fixes the issue 😄 Thanks!