seleniumbase / SeleniumBase

📊 Python's all-in-one framework for web crawling, scraping, testing, and reporting. Supports pytest. UC Mode provides stealth. Includes many tools.
https://seleniumbase.io
MIT License
5.36k stars 980 forks source link

Incompatible packages when trying to install seleniumbase. #2951

Closed BarnabasSzabolcs closed 3 months ago

BarnabasSzabolcs commented 3 months ago

Hi, I love your project and I was sooo enthusiastic to integrate it! 😍 Unfortunately, I have received the following error when trying to install seleniumbase:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
seleniumbase 4.28.7 requires chardet==5.2.0, but you have chardet 3.0.4 which is incompatible.
seleniumbase 4.28.7 requires h11==0.14.0, but you have h11 0.9.0 which is incompatible.
seleniumbase 4.28.7 requires idna==3.7, but you have idna 2.10 which is incompatible.
seleniumbase 4.28.7 requires requests==2.31.0, but you have requests 2.32.3 which is incompatible.
seleniumbase 4.28.7 requires selenium==4.22.0; python_version >= "3.8", but you have selenium 4.23.0 which is incompatible.
seleniumbase 4.28.7 requires typing-extensions>=4.12.2; python_version >= "3.8", but you have typing-extensions 4.9.0 which is incompatible.

Is it possible to relax the project requirements a bit? (e.g. googletrans's latest version still requires chardet 3.0.4, but requests, idna, h11 and typing extensions are all package-required dependencies for me...)

Thanks! Barney

p.s.

my requirements.in

channels  
channels_redis  
django-static-sitemaps
gunicorn
psycopg2-binary==2.9.9  # it is the latest
django==3.2.19  # ^5 is the latest
django-compressor
django-crispy-forms
django-hosts
django-picklefield
django-redis
django-simple-menu
djangorestframework
drf-access-policy  
django-dynamic-preferences
requests
pypugjs
minify-html
sortedcontainers
datrie  
django-rosetta
django-sslserver
django-mass-edit  
regex
django-debug-toolbar  
google-cloud-translate  
googletrans
polib  
hanziconv  
jieba  
Pillow 
pybktree 
editdistance 
selenium
pykakasi 
romkan 
more-itertools
unidecode
python-dotenv  
django-allauth==0.50.0  
dj-rest-auth  
django-cors-headers  
django-rest-knox  
django-mama-cas  
django-cas-ng  
django-cleanup  
django-q 
pytz  
redgreenunittest  
tqdm  
pyyaml
ruamel.yaml  
indic-transliteration
pydub  
mishkal
codernitydb3   
lang-trans
redis
cachetools  
sentry-sdk[django]  

my requirements.txt (if it is of any help for you):

#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
#    pip-compile --annotation-style=line
#
alyahmor==0.2             # via mishkal, qalsadi
arabic-stopwords==0.4.3   # via alyahmor, qalsadi
arramooz-pysqlite==0.4.2  # via alyahmor, mishkal, qalsadi
arrow==1.3.0              # via django-q
asgiref==3.8.1            # via channels, channels-redis, django, django-cors-headers
asmai==0.1                # via mishkal
async-timeout==4.0.3      # via redis
attrs==23.2.0             # via outcome, trio
backports-functools-lru-cache==2.0.0  # via indic-transliteration
blessed==1.20.0           # via django-q
cachetools==5.4.0         # via -r requirements.in, google-auth
certifi==2024.7.4         # via httpx, requests, selenium, sentry-sdk
cffi==1.16.0              # via cryptography
channels==4.0.0           # via -r requirements.in, channels-redis
channels-redis==4.2.0     # via -r requirements.in
chardet==3.0.4            # via httpx
charset-normalizer==3.3.2  # via pypugjs, requests
click==8.1.7              # via typer
codernitydb3==0.6.0       # via -r requirements.in, qalsadi
cryptography==43.0.0      # via pyjwt
datrie==0.8.2             # via -r requirements.in
defusedxml==0.7.1         # via python3-openid
deprecated==1.2.14        # via pykakasi
dj-rest-auth==6.0.0       # via -r requirements.in
django==3.2.19            # via -r requirements.in, channels, dj-rest-auth, django-allauth, django-appconf, django-cas-ng, django-cors-headers, django-crispy-forms, django-debug-toolbar, django-dynamic-preferences, django-mass-edit, django-picklefield, django-q, django-redis, django-rest-knox, django-rosetta, django-simple-menu, django-sslserver, django-static-sitemaps, djangorestframework, sentry-sdk
django-allauth==0.50.0    # via -r requirements.in
django-appconf==1.0.6     # via django-compressor
django-cas-ng==5.0.1      # via -r requirements.in
django-cleanup==8.1.0     # via -r requirements.in
django-compressor==4.4    # via -r requirements.in
django-cors-headers==4.4.0  # via -r requirements.in
django-crispy-forms==2.0  # via -r requirements.in
django-debug-toolbar==4.3.0  # via -r requirements.in
django-dynamic-preferences==1.16.0  # via -r requirements.in
django-hosts==6.0         # via -r requirements.in
django-mama-cas==2.5.0    # via -r requirements.in
django-mass-edit==3.5.0   # via -r requirements.in
django-picklefield==3.2   # via -r requirements.in, django-q
django-q==1.3.6           # via -r requirements.in
django-redis==5.4.0       # via -r requirements.in
django-rest-knox==5.0.1   # via -r requirements.in
django-rosetta==0.9.9     # via -r requirements.in
django-simple-menu==2.1.3  # via -r requirements.in
django-sslserver==0.22    # via -r requirements.in
django-static-sitemaps==5.0.0  # via -r requirements.in
djangorestframework==3.15.1  # via -r requirements.in, dj-rest-auth, django-rest-knox, drf-access-policy
drf-access-policy==1.5.0  # via -r requirements.in
editdistance==0.8.1       # via -r requirements.in
google-api-core[grpc]==2.19.1  # via google-cloud-core, google-cloud-translate
google-auth==2.32.0       # via google-api-core, google-cloud-core, google-cloud-translate
google-cloud-core==2.4.1  # via google-cloud-translate
google-cloud-translate==3.15.4  # via -r requirements.in
googleapis-common-protos==1.63.2  # via google-api-core, grpcio-status
googletrans==3.0.0        # via -r requirements.in
grpcio==1.65.1            # via google-api-core, grpcio-status
grpcio-status==1.65.1     # via google-api-core
gunicorn==22.0.0          # via -r requirements.in
h11==0.9.0                # via httpcore, wsproto
h2==3.2.0                 # via httpcore
hanziconv==0.3.2          # via -r requirements.in
hpack==3.0.0              # via h2
hstspreload==2024.7.1     # via httpx
httpcore==0.9.1           # via httpx
httpx==0.13.3             # via googletrans
hyperframe==5.2.0         # via h2
idna==2.10                # via httpx, requests, trio
indic-transliteration==2.3.60  # via -r requirements.in
jaconv==0.3.4             # via pykakasi
jieba==0.42.1             # via -r requirements.in
lang-trans==0.6.0         # via -r requirements.in
libqutrub==1.2.4.1        # via alyahmor, mishkal, qalsadi, sylajone
lxml==5.2.2               # via python-cas
markdown-it-py==3.0.0     # via rich
maskouk-pysqlite==0.1     # via mishkal
mdurl==0.1.2              # via markdown-it-py
minify-html==0.15.0       # via -r requirements.in
mishkal==0.4.1            # via -r requirements.in
more-itertools==10.3.0    # via -r requirements.in
msgpack==1.0.8            # via channels-redis
mysam-tagmanager==0.4     # via mishkal, qalsadi
naftawayh==0.4            # via mishkal, qalsadi, sylajone
oauthlib==3.2.2           # via requests-oauthlib
outcome==1.3.0.post0      # via trio
packaging==24.1           # via gunicorn
persisting-theory==1.0    # via django-dynamic-preferences
pickledb==0.9.2           # via mishkal, qalsadi, sylajone
pillow==10.4.0            # via -r requirements.in
polib==1.2.0              # via -r requirements.in, django-rosetta
proto-plus==1.24.0        # via google-api-core, google-cloud-translate
protobuf==5.27.2          # via google-api-core, google-cloud-translate, googleapis-common-protos, grpcio-status, proto-plus
psycopg2-binary==2.9.9    # via -r requirements.in
pyarabic==0.6.15          # via alyahmor, arabic-stopwords, arramooz-pysqlite, asmai, libqutrub, maskouk-pysqlite, mishkal, naftawayh, qalsadi, sylajone, tashaphyne
pyasn1==0.6.0             # via pyasn1-modules, rsa
pyasn1-modules==0.4.0     # via google-auth
pybktree==1.1             # via -r requirements.in
pycparser==2.22           # via cffi
pydub==0.25.1             # via -r requirements.in
pygments==2.18.0          # via redgreenunittest, rich
pyjwt[crypto]==2.8.0      # via django-allauth
pykakasi==2.3.0           # via -r requirements.in
pyparsing==3.1.2          # via drf-access-policy
pypugjs==5.11.0           # via -r requirements.in
pysocks==1.7.1            # via urllib3
python-cas==1.6.0         # via django-cas-ng
python-dateutil==2.9.0.post0  # via arrow
python-dotenv==1.0.1      # via -r requirements.in
python3-openid==3.2.0     # via django-allauth
pytz==2024.1              # via -r requirements.in, django
pyyaml==6.0.1             # via -r requirements.in
qalsadi==0.5              # via mishkal, sylajone
rcssmin==1.1.1            # via django-compressor
redgreenunittest==0.1.1   # via -r requirements.in
redis==5.0.7              # via -r requirements.in, channels-redis, django-redis
regex==2024.5.15          # via -r requirements.in, indic-transliteration
requests==2.32.3          # via -r requirements.in, django-allauth, django-mama-cas, django-rosetta, google-api-core, python-cas, requests-oauthlib
requests-oauthlib==2.0.0  # via django-allauth
rfc3986==1.5.0            # via httpx
rich==13.7.1              # via typer
rjsmin==1.2.1             # via django-compressor
roman==4.2                # via indic-transliteration
romkan==0.2.1             # via -r requirements.in
rsa==4.9                  # via google-auth
ruamel-yaml==0.18.6       # via -r requirements.in
ruamel-yaml-clib==0.2.8   # via ruamel-yaml
selenium==4.23.0          # via -r requirements.in
sentry-sdk[django]==2.10.0  # via -r requirements.in
shellingham==1.5.4        # via typer
six==1.16.0               # via blessed, django-dynamic-preferences, django-static-sitemaps, pyarabic, pypugjs, python-cas, python-dateutil
sniffio==1.3.1            # via httpcore, httpx, trio
sortedcontainers==2.4.0   # via -r requirements.in, trio
sqlparse==0.5.1           # via django, django-debug-toolbar
sylajone==0.3.1           # via mishkal
tashaphyne==0.3.6         # via mishkal, naftawayh, qalsadi
toml==0.10.2              # via indic-transliteration
tqdm==4.66.4              # via -r requirements.in
trio==0.26.0              # via selenium, trio-websocket
trio-websocket==0.11.1    # via selenium
typer==0.12.3             # via indic-transliteration
types-python-dateutil==2.9.0.20240316  # via arrow
typing-extensions==4.9.0  # via selenium, typer
unidecode==1.3.8          # via -r requirements.in
urllib3[socks]==2.2.2     # via requests, selenium, sentry-sdk
wcwidth==0.2.13           # via blessed
websocket-client==1.8.0   # via selenium
wrapt==1.16.0             # via deprecated
wsproto==1.2.0            # via trio-websocket

# The following packages are considered to be unsafe in a requirements file:
# setuptools
mdmintz commented 3 months ago

The package you use, https://pypi.org/project/googletrans/, was last released 4 years ago (Jun 14, 2020). The dependency that it has, https://pypi.org/project/chardet/3.0.4/, was released 7 years ago (Jun 8, 2017). Those are very out-of-date. Your best option may be to use a separate virtual environment so that you don't run into dependency conflicts, as SeleniumBase uses much newer versions of dependencies, which are required.

As for some of your other conflicts:

SeleniumBase runs a lot of extensive testing, so if it pins a minimum version of a dependency, then it's probably for good reason. (Or if it pins an exact version of a dependency, then it's also probably for a good reason.) We do hope that selenium and requests ship fixes for their recent issues soon, so that those dependencies can be refreshed.

BarnabasSzabolcs commented 3 months ago

Thanks a lot, mdmintz!