SIP configuration seems incomplete for Python3
Rainer Hurling
rhurlin at gwdg.de
Sat Nov 24 15:44:28 UTC 2018
In the preparation of a new port for QGIS 3 (graphics/qgis) I need a
functioning sip installation under Python 3.x, to be able to build and
use QGIS Python plugins. Unfortunately, the QGIS scripts have problems
to find the right sip version and fail. After spending some time, I
think it is more a problem with Python 3 SIP than a QGIS one.
I have _not_ set
DEFAULT_VERSIONS+= python=2.7 python2=2.7 python3=3.6
in /etc/make.conf, so 2.7 should be the default version (I need this for
other projects).
Installed for Python 3 are the following and other ports:
python36-3.6.7
py36-sip-4.19.8_1,1
sipconfig.py for both Python versions can be found under their Python dirs:
# locate sipconfig.py
/usr/local/lib/python2.7/site-packages/sipconfig.py
/usr/local/lib/python2.7/site-packages/sipconfig.pyc
/usr/local/lib/python2.7/site-packages/sipconfig.pyo
/usr/local/lib/python3.6/site-packages/sipconfig.py
Interestingly enough, only sip under Python 2.7 seems to have a compiled
version.
The sip binaries are found on their expected locations. The one from the
default version 2.7 is linked against the unnumbered one:
# ls /usr/local/bin/sip*
... /usr/local/bin/sip -> sip-2.7
... /usr/local/bin/sip-2.7
... /usr/local/bin/sip-3.6
Now, in Python3, if I test for installed SIP configuration, I get:
# python3
Python 3.6.7 (default, Nov 18 2018, 09:23:28)
[GCC 4.2.1 Compatible FreeBSD Clang 6.0.1 (tags/RELEASE_601/final
335540)] on freebsd13
Type "help", "copyright", "credits" or "license" for more
information.
>>> import sipconfig
>>>
>>> sipcfg = sipconfig.Configuration()
>>> print("sip_version:%06.0x" % sipcfg.sip_version)
sip_version:041308
>>> print("sip_version_num:%d" % sipcfg.sip_version)
sip_version_num:267016
>>> print("sip_version_str:%s" % sipcfg.sip_version_str)
sip_version_str:4.19.8
>>> print("sip_bin:%s" % sipcfg.sip_bin)
sip_bin:/usr/local/bin/sip-3.6
>>> print("default_sip_dir:%s" % sipcfg.default_sip_dir)
default_sip_dir:/usr/local/share/py36-sip
^^^^^^^^^^^^^^^^^^^^^^^^^
>>> print("sip_inc_dir:%s" % sipcfg.sip_inc_dir)
sip_inc_dir:/usr/local/include/python3.6m
>>> # SIP 4.19.10+ has new sipcfg.sip_module_dir
... if hasattr(sipcfg, "sip_module_dir"):
... print("sip_module_dir:%s" % sipcfg.sip_module_dir)
... else:
... print("sip_module_dir:%s" % sipcfg.sip_mod_dir)
...
sip_module_dir:/usr/local/lib/python3.6/site-packages
>>>
The problem seems to be, that there is no
/usr/local/share/py36-sip
any more. After the recent changes to PyQt it resides under
/usr/loca/share/PyQt5/3.6/sip/
Obviously, there is something wrong with the detection of the right
location. Perhaps, the old patch (/usr/local/share/py36-sip) is
hardcoded somewhere?
Is this a general problem or is there something wrong with my
configuration? Any help is really appreciated.
Regards,
Rainer Hurling
More information about the freebsd-ports
mailing list