The pipenv tool was nice in theory, but in practice it's just too hard to update selectively, and it makes using it a pain. The qemu.qmp repo dropped pipenv support a while back and it's been functioning just fine, so I'm backporting that change here to qemu.git. Signed-off-by: John Snow <jsnow@redhat.com> Message-id: 20230210003147.1309376-3-jsnow@redhat.com Signed-off-by: John Snow <jsnow@redhat.com>
		
			
				
	
	
		
			85 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
QEMU Python Tooling
 | 
						|
===================
 | 
						|
 | 
						|
This directory houses Python tooling used by the QEMU project to build,
 | 
						|
configure, and test QEMU. It is organized by namespace (``qemu``), and
 | 
						|
then by package (e.g. ``qemu/machine``, ``qemu/qmp``, etc).
 | 
						|
 | 
						|
``setup.py`` is used by ``pip`` to install this tooling to the current
 | 
						|
environment. ``setup.cfg`` provides the packaging configuration used by
 | 
						|
``setup.py``. You will generally invoke it by doing one of the following:
 | 
						|
 | 
						|
1. ``pip3 install .`` will install these packages to your current
 | 
						|
   environment. If you are inside a virtual environment, they will
 | 
						|
   install there. If you are not, it will attempt to install to the
 | 
						|
   global environment, which is **not recommended**.
 | 
						|
 | 
						|
2. ``pip3 install --user .`` will install these packages to your user's
 | 
						|
   local python packages. If you are inside of a virtual environment,
 | 
						|
   this will fail; you want the first invocation above.
 | 
						|
 | 
						|
If you append the ``--editable`` or ``-e`` argument to either invocation
 | 
						|
above, pip will install in "editable" mode. This installs the package as
 | 
						|
a forwarder ("qemu.egg-link") that points to the source tree. In so
 | 
						|
doing, the installed package always reflects the latest version in your
 | 
						|
source tree.
 | 
						|
 | 
						|
Installing ".[devel]" instead of "." will additionally pull in required
 | 
						|
packages for testing this package. They are not runtime requirements,
 | 
						|
and are not needed to simply use these libraries.
 | 
						|
 | 
						|
Running ``make develop`` will pull in all testing dependencies and
 | 
						|
install QEMU in editable mode to the current environment.
 | 
						|
(It is a shortcut for ``pip3 install -e .[devel]``.)
 | 
						|
 | 
						|
See `Installing packages using pip and virtual environments
 | 
						|
<https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/>`_
 | 
						|
for more information.
 | 
						|
 | 
						|
 | 
						|
Using these packages without installing them
 | 
						|
--------------------------------------------
 | 
						|
 | 
						|
These packages may be used without installing them first, by using one
 | 
						|
of two tricks:
 | 
						|
 | 
						|
1. Set your PYTHONPATH environment variable to include this source
 | 
						|
   directory, e.g. ``~/src/qemu/python``. See
 | 
						|
   https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH
 | 
						|
 | 
						|
2. Inside a Python script, use ``sys.path`` to forcibly include a search
 | 
						|
   path prior to importing the ``qemu`` namespace. See
 | 
						|
   https://docs.python.org/3/library/sys.html#sys.path
 | 
						|
 | 
						|
A strong downside to both approaches is that they generally interfere
 | 
						|
with static analysis tools being able to locate and analyze the code
 | 
						|
being imported.
 | 
						|
 | 
						|
Package installation also normally provides executable console scripts,
 | 
						|
so that tools like ``qmp-shell`` are always available via $PATH. To
 | 
						|
invoke them without installation, you can invoke e.g.:
 | 
						|
 | 
						|
``> PYTHONPATH=~/src/qemu/python python3 -m qemu.qmp.qmp_shell``
 | 
						|
 | 
						|
The mappings between console script name and python module path can be
 | 
						|
found in ``setup.cfg``.
 | 
						|
 | 
						|
 | 
						|
Files in this directory
 | 
						|
-----------------------
 | 
						|
 | 
						|
- ``qemu/`` Python 'qemu' namespace package source directory.
 | 
						|
- ``tests/`` Python package tests directory.
 | 
						|
- ``avocado.cfg`` Configuration for the Avocado test-runner.
 | 
						|
  Used by ``make check`` et al.
 | 
						|
- ``Makefile`` provides some common testing/installation invocations.
 | 
						|
  Try ``make help`` to see available targets.
 | 
						|
- ``MANIFEST.in`` is read by python setuptools, it specifies additional files
 | 
						|
  that should be included by a source distribution.
 | 
						|
- ``PACKAGE.rst`` is used as the README file that is visible on PyPI.org.
 | 
						|
- ``README.rst`` you are here!
 | 
						|
- ``VERSION`` contains the PEP-440 compliant version used to describe
 | 
						|
  this package; it is referenced by ``setup.cfg``.
 | 
						|
- ``setup.cfg`` houses setuptools package configuration.
 | 
						|
- ``setup.py`` is the setuptools installer used by pip; See above.
 |