gevent 1.3 runs on Python 2.7 and Python 3. Releases 3.4, 3.5 and 3.6 of Python 3 are supported. (Users of older versions of Python 2 need to install gevent 1.0.x (2.5), 1.1.x (2.6) or 1.2.x (<=2.7.8); gevent 1.2 can be installed on Python 3.3.) gevent requires the greenlet library and will install the cffi library by default on Windows.
gevent 1.3 also runs on PyPy 5.5 and above, although 5.9 or above is strongly recommended. On PyPy, there are no external dependencies.
gevent is tested on Windows, OS X, and Linux, and should run on most other Unix-like operating systems (e.g., FreeBSD, Solaris, etc.)
Note
On Windows using the libev backend, gevent is limited to a maximum of 1024 open sockets due to limitations in libev. This limitation should not exist with the default libuv backend.
Note
This section is about installing released versions of gevent as distributed on the Python Package Index
gevent and greenlet can both be installed with pip, e.g., pip
install gevent
. Installation using buildout is also supported.
On Windows, OS X, and Linux, both gevent and greenlet are distributed as binary wheels.
Tip
You need Pip 8.0 or later, or buildout 2.10.0 to install the binary wheels.
Tip
On Linux, you’ll need to install gevent from source if you wish to use the libuv loop implementation. This is because the manylinux1 specification for the distributed wheels does not support libuv. The cffi library must be installed at build time.
If you are unable to use the binary wheels (for platforms where no pre-built wheels are available or if wheel installation is disabled, e.g., for libuv support on Linux), here are some things you need to know.
pip install --no-binary
gevent gevent
.setuptools
. This is installed
automatically in virtual environments and by buildout. However,
gevent uses PEP 496 environment markers in setup.py
.
Consequently, you’ll need a version of setuptools newer than 25
(mid 2016) to install gevent from source; a version that’s too old
will produce a ValueError
. Older versions of pipenv may also
have issues installing gevent for this reason.The following are some common installation problems and solutions for those compiling gevent from source.
noexec
option. This can cause a standard
pip install gevent
to fail with an error like cannot run C
compiled programs
. One fix is to mount the temporary directory
without that option. Another may be to use the --build
option to
pip install
to specify another directory. See issue #570 and issue #612 for examples.CFLAGS
. For
example, see Library Updates.CPPFLAGS
(the environment variable containing the default
options for the C preprocessor) if they are using the libev shipped
with gevent. See Operating Systems
for more information.ValueError: ("Expected ',' or end-of-list in", "cffi >=
1.11.5 ; sys_platform == 'win32' and platform_python_implementation
== 'CPython'", 'at', " ; sys_platform == 'win32' and
platform_python_implementation == 'CPython'")
, the version of
setuptools is too old. Install a more recent version of setuptools.gevent has no runtime dependencies outside the standard library, greenlet and (on some platforms) cffi. However, there are a number of additional libraries that extend gevent’s functionality and will be used if they are available.
The psutil library is needed to monitor memory usage.
zope.event is highly
recommended for configurable event support; it can be installed with
the events
extra, e.g., pip install gevent[events]
.
dnspython is required for the
new pure-Python resolver, and on Python 2, so is idna. They can be installed with the
dnspython
extra.
To install the latest development version:
pip install setuptools cffi 'cython>=0.28' git+git://github.com/gevent/gevent.git#egg=gevent
Note
You will not be able to run gevent’s test suite using that method.
To hack on gevent (using a virtualenv):
$ git clone https://github.com/gevent/gevent.git
$ cd gevent
$ virtualenv env
$ source env/bin/activate
(env) $ pip install -r dev-requirements.txt
Note
The notes above about installing from source apply here as well.
The dev-requirements.txt
file takes care of the library
prerequisites (CFFI, Cython), but having a working C compiler that
can create Python extensions is up to you.
There are a few different ways to run the tests. To simply run the tests on one version of Python during development, begin with the above instructions to install gevent in a virtual environment and then run:
(env) $ python -mgevent.tests
Before submitting a pull request, it’s a good idea to run the tests across all supported versions of Python, and to check the code quality using prospector. This is what is done on Travis CI. Locally it can be done using tox:
pip install tox
tox
The testrunner accepts a --coverage
argument to enable code
coverage metrics through the coverage.py package. That would go
something like this:
python -m gevent.tests --coverage
coverage combine
coverage html -i
<open htmlcov/index.html>
A test suite is run for every push and pull request submitted. Travis CI is used to test on Linux, and AppVeyor runs the builds on Windows.
Builds on Travis CI automatically submit updates to coveralls.io to monitor test coverage.
Note
On Debian, you will probably need libpythonX.Y-testsuite
installed to run all the tests.
Next page: Introduction