ibus-setup fails with local python3

Bug #1611523 reported by Ronald L. Sprouse
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
ibus (Ubuntu)
Invalid
Undecided
Unassigned

Bug Description

If a user has installed a local python3 (e.g. Anaconda) ibus-setup may fail to run because of a missing library:

Traceback (most recent call last):
  File "/usr/share/ibus/setup/main.py", line 31, in <module>
    from gi.repository import GLib
ImportError: No module named 'gi'

This error can be avoided if ibus-setup explicitly executes the system python3 rather than the first python3 found in $PATH, by changing:

  exec python3 /usr/share/ibus/setup/main.py $@

to:

  exec /usr/bin/python3 /usr/share/ibus/setup/main.py $@

ProblemType: Bug
DistroRelease: Ubuntu 16.04
Package: ibus 1.5.11-1ubuntu2
ProcVersionSignature: Ubuntu 4.4.0-24.43-generic 4.4.10
Uname: Linux 4.4.0-24-generic x86_64
ApportVersion: 2.20.1-0ubuntu2.1
Architecture: amd64
CurrentDesktop: XFCE
Date: Tue Aug 9 14:17:20 2016
InstallationDate: Installed on 2016-06-24 (45 days ago)
InstallationMedia: Ubuntu-Server 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.3)
SourcePackage: ibus
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Ronald L. Sprouse (5-ronald) wrote :
Revision history for this message
Aron Xu (happyaron) wrote :

That would mean everything in the distro should run system python3 explicitly, or different things are tend to break from time to time, which is definitely not the way to go.

You would need to install the missing python3 modules to make it work, in this specific case that would be Gobject Introspection.

Changed in ibus (Ubuntu):
status: New → Invalid
Revision history for this message
Ryan Lovett (ryan-spacecoaster) wrote : Re: [Bug 1611523] Re: ibus-setup fails with local python3

Things tend to not break because they explicitly use the full system path.
This is breaking because it is not.

Ryan

On Tue, Aug 9, 2016 at 11:00 PM, Aron Xu <email address hidden> wrote:

> That would mean everything in the distro should run system python3
> explicitly, or different things are tend to break from time to time,
> which is definitely not the way to go.
>
> You would need to install the missing python3 modules to make it work,
> in this specific case that would be Gobject Introspection.
>
> ** Changed in: ibus (Ubuntu)
> Status: New => Invalid
>
> --
> You received this bug notification because you are subscribed to the bug
> report.
> https://bugs.launchpad.net/bugs/1611523
>
> Title:
> ibus-setup fails with local python3
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1611523/+subscriptions
>

Revision history for this message
Ryan Lovett (ryan-spacecoaster) wrote :

$ cd /usr/bin
$ grep 'exec python' * 2>/dev/null
ibus-setup:exec python3 /usr/share/ibus/setup/main.py $@
$ grep 'exec python' * 2>/dev/null | wc -l
1
$ grep 'exec /usr/bin' * 2>/dev/null | wc -l
70

Ryan

On Tue, Aug 9, 2016 at 11:16 PM, Ryan Lovett <email address hidden> wrote:

> Things tend to not break because they explicitly use the full system path.
> This is breaking because it is not.
>
> Ryan
>
> On Tue, Aug 9, 2016 at 11:00 PM, Aron Xu <email address hidden>
> wrote:
>
>> That would mean everything in the distro should run system python3
>> explicitly, or different things are tend to break from time to time,
>> which is definitely not the way to go.
>>
>> You would need to install the missing python3 modules to make it work,
>> in this specific case that would be Gobject Introspection.
>>
>> ** Changed in: ibus (Ubuntu)
>> Status: New => Invalid
>>
>> --
>> You received this bug notification because you are subscribed to the bug
>> report.
>> https://bugs.launchpad.net/bugs/1611523
>>
>> Title:
>> ibus-setup fails with local python3
>>
>> To manage notifications about this bug go to:
>> https://bugs.launchpad.net/ubuntu/+source/ibus/+bug/1611523/
>> +subscriptions
>>
>
>

Revision history for this message
Ronald L. Sprouse (5-ronald) wrote :

I disagree that this solution is definitely not the way to go. Other distros put it in their policy. See, for example, Debian's Python policy section 2.4.2 (https://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter_loc):

"The preferred specification for the Python 3 interpreter is /usr/bin/python3"

and

"Maintainers should not override the Debian Python interpreter using /usr/bin/env name. This is not advisable as it bypasses Debian's dependency checking and makes the package vulnerable to incomplete local installations of Python."

Ubuntu isn't bound by Debian policy, of course, but I agree with the reasoning.

Revision history for this message
Ronald L. Sprouse (5-ronald) wrote :

Also, note that a user is likely to encounter this issue by clicking on IBus Preferences in the Settings Manager, which silently fails. There is no obvious indication that the failure has anything to do with Python at all, much less a specific dependency missing in the local Python.

With the rising popularity of third-party Pythons this is likely to be a mysterious failure to many end users.

Revision history for this message
Kal Sze (ksze) wrote :

I agree that the full path to the system python3 should be specified. I use pyenv to install multiple local versions of python2 and python3. And this was breaking silently for me (couldn't open the preferences gui from the ibus menu).

Revision history for this message
Yusuke Doi (yusukedoi) wrote :

I'd like to add big +1 to the proposed solution. As ibus is tool provided by the system, it SHOULD use the system python3 or anything wrong can happen.

It's likely to have user's own python3 interpreter if you're seriously working on machine learning field (e.g. pyenv and virtualenv), and I strongly believe Ubuntu (or other linux distros) shall give the freedom to the users, including installing user local python interpreter.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.