-
Notifications
You must be signed in to change notification settings - Fork 246
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
newly release pypi package logged /usr/local/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 152 from PyObject return f(*args, **kwds)
#178
Comments
OTOH maybe you aren't tight-knit with gevent; if so I filed this: gevent/gevent#1674 |
Yes, greenlet 0.4.17 adds a new |
Oh, it looks like gevent is subclassing a |
I yanked 0.4.17 for the time being. |
Yup. This has come up before. I'll get a new release of gevent out built against that version ASAP. Users of older versions will want to pin their greenlet dependency. In general, because many of the fields in the greenlet structure can be included or excluded based on C preprocessor definitions, even strict greenlet version pins can have this trouble. |
Ah, cool! Then please un-yank 0.4.17 when it stops being an issue. |
Ah, so even the same version could be built differently and lead to a similar issue. Hm. Well that's a tricky problem to have. |
to be updated after fixing similar issues python-greenlet/greenlet#178
to be updated after fixing similar issues python-greenlet/greenlet#178
gevent 20.9.0 was released at the same time greenlet 0.4.17 was un-yanked. On Python 3.7 and higher, gevent 20.9.0 is required to use (a standard build of) greenlet 0.4.17. |
So is the fix to pin to 0.20.6 and 0.4.16? That works for me locally but for some reason our Heroku deployments (with the same Pipfile.lock) seems to be seeing the error. |
On Python 3.7, you either need On Python 3.8 or 3.9, the minimum gevent version is 20.6.0, and the minimum greenlet version is 0.4.16. I'd just use |
I'm on python
|
@oaosman84 I would double check your version of gevent. The size If you're sure about gevent being 20.9, then check how it was built. If you're using the manylinux wheels, I wouldn't expect a problem. I just double checked the 64-bit 3.8 manylinux wheel and it's built correctly AFAICS. But if you're building or built gevent yourself, then it may not be correct. If you used |
Thanks, that makes sense. We're just using pipenv on Heroku, and our Pipfile.lock has greenlet at ==0.4.17 and gevent at ==20.9.0. The odd thing is it deploys on a new fresh app, but on old apps, it fails (the old apps were running 0.4.16 / 20.6). But when Heroku deploys a new version of the app it shouldn't matter what the old versions are running, but I suspect there might be something weird going on with Heroku. |
What's the best way to confirm the versions that are actually running? |
As long as you're in the right environment, pip subcommands like $ python -c 'import gevent; print("gevent", gevent.__version__); import greenlet; print("greenlet", greenlet.__version__)'
gevent 20.9.1.dev0
greenlet 0.4.17 |
Thanks so much for helping with this, but I'm kind of desperate here as I can't really deploy our app right now. So here's some fun, this is the output of the print command:
So it does look like they're both on the right versions (20.9.0 / 0.4.17), but the binary incompatibility warning is there. |
All I can guess is that your gevent version was incorrectly compiled. You may need to wipe out all the local wheel caches (e.g., pip's download and build cache) and start fresh. |
This fixes this issue: python-greenlet/greenlet#178 This impacted the info and permalink services. python-greenlet/greenlet#178
the new released |
Yes! Anybody can tell which version of Update: |
gevent 22.10.2 requires greenlet 2; all previous versions of gevent require greenlet 1 or earlier. gevent 20.12.0 and newer have lower and upper bound constraints on the version of greenlet they need, i.e., |
Description:
My Apache Airflow FlaskAppBuilder webserver installed and ran fine 2h ago with v 0.4.16;
40 minutes ago the 0.4.17 package was published.
Making an unrelated config file change to my dockerfile triggered a rebuild with reinstall which didn't pin the greenlets package, and 0.4.17 was installed. Running the webserver then failed to serve any pages and logged an error:
Rebuilding with 0.4.16 and everything is fine again.
These constraints (failing to mention greenlets) were used: https://github.com/apache/airflow/blob/constraints-1.10.12/constraints-3.7.txt
The text was updated successfully, but these errors were encountered: