coleifer / pysqlite3

SQLite3 DB-API 2.0 driver from Python 3, packaged separately, with improvements
zlib License
188 stars 53 forks source link

Unable to install the latest pysqlite3-binary #40

Closed hiteshthavnani closed 2 years ago

hiteshthavnani commented 2 years ago

I am trying to install latest pysqlite3-binary 0.4.7 but failed to do. I am using centos 7.9.2009 as the VM and python 3.7.12.

[root@vm] # pip install pysqlite3-binary==0.4.7.post6 ERROR: Could not find a version that satisfies the requirement pysqlite3-binary==0.4.7.post6 (from versions: 0.4.1.post1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6) ERROR: No matching distribution found for pysqlite3-binary==0.4.7.post6

Please let me know if we need more info at my end.

coleifer commented 2 years ago

On debian 10:

$ python --version
Python 3.7.3
$ pip install pysqlite3-binary==0.4.7.post6
Collecting pysqlite3-binary==0.4.7.post6
  Downloading pysqlite3_binary-0.4.7.post6-cp37-cp37m-manylinux_2_24_x86_64.whl (3.6 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.6/3.6 MB 921.7 kB/s eta 0:00:00
Installing collected packages: pysqlite3-binary
Successfully installed pysqlite3-binary-0.4.7.post6

Not sure what to tell you.

cldellow commented 1 year ago

For others who may find this: I had the same issue trying to install pysqlite3-binary 0.5.0 on Python 3.8.10 on Ubuntu 20.04.

Upgrading pip with pip install --upgrade pip resolved the issue.

coleifer commented 1 year ago

@pypa is determined to make everything complicated apparently. What a joke of an organization.

AbdealiLoKo commented 1 year ago

I had a similar issue, and I found that pysqlite3-binary v0.4.7 has manylinus wheels for manylinux_2_24 only While older versions had wheels for manylinux1 and manylinux_2_24

centos 7 which @hiteshthavnani was using has glibc 2.17:

$ ldd --version
ldd (GNU libc) 2.17

So, a manylinux_2_24 wheel which is for glibc 2.24+ will not be used in centos 7

Was there a conscious decision to drop manylinux1 wheels in 0.4.7 and 0.5 ? (Most of the places where I use pysqlite3-binary are old machines and need manylinux1)

coleifer commented 1 year ago

Pypa have declared that manylinux1 is not supported anymore, as of about 16 months ago: https://github.com/pypa/manylinux/issues/994

You have options:

AbdealiLoKo commented 1 year ago

I see, is it possible to have wheels which are more permissive though ?

Earlier pysqlite3-binary supported glibc 2.5+ And now it jumped to 2.24+

Supporting manylinux2010 aka manylinux_2_12 aka glibc 2.12+ Or supporting manylinux2014 aka manylinux_2_17 aka glibc 2.17+ Would be great

Legacy formats: https://peps.python.org/pep-0600/#legacy-manylinux-tags

coleifer commented 1 year ago

If you'd like to set up a pypi project that tracks pysqlite3 releases and builds the appropriate wheels for outdated/legacy distributions, that's of course fine.

You can easily modify the wheel-building scripts in the build-scripts/ directory to pull from a different manylinux, and adjust accordingly.

To build wheels for 3.10+ I believe was what necessitated the switch to manylinux 2_24. pypa are a bunch of clowns who don't care much about compatibility, so I am stuck following their dubious path.

AbdealiLoKo commented 1 year ago

manylinux1 should be considered legacy, but I don't think manylinux2014 aka manylinux_2_17 should be considered legacy as of now

3.10+ should not require manyinux_2_24 and should work with manylinux_2_17 also For example, pandas has python 3.10 and 3.11 wheels with manylinux_2_17 image

If there is interest, I can help with moving pysqlite3-binary from manylinux_2_24 -> manylinux_2_17 (It would help me simplify my build cycles)