Stable version of gevent? - python

There appears to be a stable and unstable version here: https://pypi.python.org/pypi/gevent#downloads
It's not entirely clear to me what the distinctions are. I'm guessing there's a stable version on pip, described under the heading "Get gevent", and there's a separate unstable version on github under the heading "Development".
I simply want to install the stable version for production usage. pip install gevent doesn't seem to be the proper way to do this, since it installs something that has a syntax error in line 289 of hub.py, and looking in there I realized that it's a completely different version of gevent from the most up-to-date version on Github.
How do I install gevent?

It looks like the current version on pypi is a release candidate and partially supports Python 3. If you want a stable version (that doesn't support python 3.x) you could try specifying the specific version when you invoke pip
pip install gevent==1.0.2
Alternately, you can install the version based on a specific commit on Github
pip install git+git://github.com/gevent/gevent.git#egg=gevent
This is what they are referring to as the development version. This means that you will be running the code as it exists on Github which could potentially be buggy but will include all latest changes to the codebase.
As a sidenote, if you're having issues with the version currently on pypi, you can see if the issues are reproducible using the most recent Github changes and submit a bug report to the developers.

Related

PyPI: how to make the new release as the latest version

Previously, when I made a new release, the newly released one will be the latest version for the users to install. However, I tried several times for making a new release. The latest version is always the old one.
The "latest version" which is old one (1.1.0):
https://pypi.org/project/ANNOgesic/
I do have the newly released ones:
https://pypi.org/project/ANNOgesic/1.1.4/
It also show that this one is the latest version....
But when I tried to install it, the installed package is 1.1.0 which is the old one.
If I run
pip3 install ANNOgesic==1.1.4
I get error messages like these:
ERROR: Could not find a version that satisfies the requirement
ANNOgesic==1.1.4
ERROR: No matching distribution found for ANNOgesic==1.1.4
What I do to upload my code is the following
python3 setup.py sdist bdist_wheel
twine upload dist/*
I do not know what happens...
Okay, I checked the package today. The issue was solved after 5h from my release. I guess the PyPI server was maintenance at that moment.

GLIBC_2.14 Error Message when Installing Pygrib

Trying to install pygrib via Anaconda package to a remote server. Instillation seems to have worked fine and all supporting libraries have been installed. But when I try to "import pygrib" I receive this message:
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /lustre/gporter/anaconda2/lib/python2.7/site-packages/../../libgrib_api-1.10.4.so)
I attempted to update GLIBC to the newest version, but I suspect the problem is hardwired in somewhere.
I attempted to update GLIBC to the newest version
What version did you end up with after the update?
Chances are, it's a version older than 2.14 (or you wouldn't be having this problem).
Note that in general a given distribution, e.g. Ubuntu-14.10, will not update the version of GLIBC ever. This is because GLIBC has a potential to break applications, and the distribution doesn't want to re-test all applications that ever shipped for it.
What you must do is either find a package for your distribution, or update the entire OS.
It's also possible to install newer GLIBC in non-default location, but this is not trivial, as this answer explains.

pip requirement specifiers: role of the comma

I am trying to install a specific version of django-cms, thus executing pip install django-cms==3.0.5. That gives me the error No matching distribution found for django-mptt==0.5.2,==0.6,==0.6.1 (from django-cms==3.0.5). And indeed, on github the setup.py file specifies the requirement django-mptt==0.5.2,==0.6,==0.6.1.
The specification says that the comma serves as a logical 'and' operator but obviously no version can be 0.5.2, 0.6 AND 0.6.1 at the same time and thus the requirement is not matched. Just installing one of those versions via pip install django-mptt==0.5.2 works without a problem but there is still the same error about django-cms==3.0.5.
Can anyone shed light on this?
This was a bug in django-cms version 3.0.5. You can see the issue here: https://github.com/divio/django-cms/issues/3704.
You can try installing version 3.0.16 if you need to stay on the 3.0 release. If you REALLY need version 3.0.5, you can install pip==1.5.6, and django-cms should still install properly.
Edit Starting from pip version 6.0, multiple == version specifiers for a single package no longer work. One of the developers commented on Github:
This is the new expected behavior from PEP 440.
The old behavior of setuptools was confusing and didn't do what most
people expected it to do. PEP 440 simplified it by changing the , to a
logical AND statement.
See https://github.com/pypa/pip/issues/2258.

If you publish Python using wheel format do you still need to publish them as egg?

Assuming that you are supporting Python 2.6 or newer, does it make any sense to publish .egg packages or is enough to publish .whl ones?
In my case, the packages are pure python.
Can you assume your prospective users will all have pip >= 1.4 and/or setuptools >= 0.8? If so, wheels are fine. If not, an egg will help them, since previous releases of pip and setuptools don't support wheels. The fact that their Python is 2.6 or better is no guarantee that their installation tools will be reasonably recent, I believe.

How to handle changing the format of a PyPi version number

My project Pyrr was previously using versions that were datestamps.
The last datestamped version was:
version='20130321'
I want to move to a proper major.minor.micro format.
I've updated a new package to PyPi in this format.
version='0.1.0'
When I pip install pyrr I still get the 20130321 version.
$ yolk -V pyrr
pyrr 0.1.0
$ pip install pyrr
Downloading/unpacking pyrr
Downloading pyrr-20130321.tar.gz
<snip>
PyPi has the over versions marked as hidden and the 0.1.0 as the only version not marked hidden.
What do I have to do to get pip / pypi to download the 0.1.0 version instead of the older datestamp versions?
20130321 is the major version, which is obviously higher than 0, therefor version 20130321 is considered the latest version.
The easiest way to fix this would be to delete the outdated version using the webinterface.
If the older versions should still exist, you could download them and reupload them using a newer version. e.g. 0.0.20130321.
If people depend on your package without a version, they wouldn't notice the new versioning system.
If people do depend on a specific version, they would have to change their version dependency. This could be considered annoying, but it is inevitable and it's a small change for them.

Categories