Installing python __init__.py file from multiple KF5 frameworks

Luca Beltrame lbeltrame at kde.org
Wed May 18 00:04:57 BST 2016


In data mercoledì 18 maggio 2016 00:09:46 CEST, Stephen Kelly ha scritto:

(I added the kde-bindings list to the CC, just in case).

> https://www.python.org/dev/peps/pep-0420/
> but I'm not certain what to do with the information there. If guidance
> can be provided, I can probably change what we install if needed.

Depends on which Python version the bindings build against. If it's 3, the 
idea would be to make a "namespaced package" which provides the PyKF5 
namespace and ensure that each binding is namespaced properly.

This means in practice that  installing pykf5.itemmodels (for example) will 
ensure that it'll belong to pykf5 without having issues with overlapping 
__init__.py files.

It is described as "Native support for package directories that don’t require 
__init__.py marker files and can automatically span multiple path segments " 
and requires Python 3.3 as minimum. 

From this stackoverflow answer[1] (the second answer is more correct than the 
first one, bear that in mind!):

"On Python 3.3 you don't have to do anything, just don't put any __init__.py 
in your namespace package directories and it will just work. "

IOW make a pykf5.itemmodels package with this setup

pykf5/
	itemmodels/
		__init__.py
		<rest of files>

notice that the pykf5 dir has no __init__.py file.

As for the rest, CMake's FindPythonInterp or FindPythonLibrary provides 
PYTHON_SITE_PACKAGES_DIR, I think, and that should be IMO used for installing 
files. "dist-packages" is a Debianism, as I said on IRC. Neither Fedora nor 
openSUSE, for example (I doubt Arch as well) use that.

Have a look at the current PyKDE4 implementation for some hints, I think.

[1] https://stackoverflow.com/questions/1675734/how-do-i-create-a-namespace-package-in-python

-- 
Luca Beltrame - KDE Forums team
GPG key ID: A29D259B



More information about the Distributions mailing list