oracle / graalpython

A Python 3 implementation built on GraalVM
Other
1.17k stars 101 forks source link

Can't use redis & pymongo library #363

Closed SatiyaWP closed 7 months ago

SatiyaWP commented 9 months ago

I'm having trouble importing redis and pymongo

[xrx@localhost ~]$ source venvGraalPyy/bin/activate
(venvGraalPyy) [xrx@localhost ~]$ python
Python 3.10.8 (Wed Sep 13 08:00:43 UTC 2023)
[Graal, GraalVM CE, Java 21] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
(venvGraalPyy) [xrx@localhost ~]$ pip list
Package            Version
------------------ ---------
certifi            2023.7.22
charset-normalizer 3.1.0
click              8.0.3
Deprecated         1.2.14
dnspython          2.4.2
graalpy-virtualenv 0.0.1
hpy                0.9.0rc2
idna               3.4
itsdangerous       2.0.1
Jinja2             3.0.3
MarkupSafe         2.1.3
packaging          23.2
pika               1.2.0
pip                22.2.2
pymongo            4.3.3
redis              4.1.1
requests           2.28.2
setuptools         63.2.0
urllib3            1.26.17
Werkzeug           2.0.2
wrapt              1.15.0
(venvGraalPyy) [xrx@localhost ~]$ graalpy
Python 3.10.8 (Wed Sep 13 08:00:43 UTC 2023)
[Graal, GraalVM CE, Java 21] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/redis/__init__.py",
line 8, in <module>
    from redis.client import Redis, StrictRedis
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/redis/client.py",
line 9, in <module>
    from redis.commands import (
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/redis/commands/__init__.py",
line 1, in <module>
    from .cluster import RedisClusterCommands
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/redis/commands/cluster.py",
line 1, in <module>
    from redis.crc import key_slot
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/redis/crc.py", line
1, in <module>
    from binascii import crc_hqx
ImportError: cannot import name 'crc_hqx' from 'binascii' (unknown location)
>>> import pymongo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/pymongo/__init__.py",
line 92, in <module>
    from pymongo.mongo_client import MongoClient
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/pymongo/mongo_client.py",
line 59, in <module>
    from pymongo import (
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/pymongo/uri_parser.py",
line 32, in <module>
    from pymongo.srv_resolver import _HAVE_DNSPYTHON, _SrvResolver
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/pymongo/srv_resolver.py",
line 21, in <module>
    from dns import resolver
  File
"/home/xrx/venvGraalPyy/lib/python3.10/site-packages/dns/resolver.py",
line 1830, in <module>
    _original_gethostbyname_ex = socket.gethostbyname_ex
AttributeError: module 'socket' has no attribute 'gethostbyname_ex'
>>>

is it for now, graalpy does not support these two modules?

msimacek commented 8 months ago

Currently, we don't implement gethostbyname_ex, so we don't support those two modules yet. I'll try to look into adding it in the following weeks.

346 commented 8 months ago

I have same issue with redis. SatiyaWP presented two errors, one in redis and one in pymongo. gethostbyname_ex is a pymongo error. You seem to have missed the redis error ImportError: cannot import name 'crc_hqx' from 'binascii' (unknown location). Is it possible to add crc_hqx as well?

msimacek commented 7 months ago

Both should be fixed in master