Package: ipython3
Version: 7.13.0-1
Severity: important
In the most recent version of ipython3 in Debian Unstable, the entry_points
functionality does not work for packages installed within a Python virtualenv
(via virtualenvwrapper).
This causes some Python packages installed via pypi in a virtualenv not to work.
This bug is not present in Debian Stable, so this looks like a regression.
This bug is present in the current development version of Ubuntu (20.04).
This bug is not present in the current release version of Ubuntu (19.10).
I also tested this in the development version of Fedora (33), and the bug is
not present there.
When installing only ipython3 itself via pip3, with all the dependencies via
the Debian package manager, the bug is not present (see below for details).
So I suspect the bug is due to how ipython3 in Debian Unstable.
A workaround is starting ipython with: python3 -m IPython
To replicate this (for example in a docker container):
$ cd /root/
$ apt update && apt install --no-install-recommends -y python3-pip ipython3
virtualenvwrapper
$ mkdir myentrytest && cd myentrytest/
Making a test python package
$ echo "from setuptools import setup" >> setup.py
$ echo "setup(name='myentrytest', entry_points={'testentry': 'testentry =
testentry'})" >> setup.py
$ source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
$ mkvirtualenv --system-site-packages -p /usr/bin/python3 testing
$ pip3 install -e . # Inside the testing virtualenv
$ ipython3
In the IPython prompt, running inside the virtualenv:
$ import pkg_resources
$ list(pkg_resources.iter_entry_points('testentry'))
For Debian Unstable this return an empty list []
In Debian Stable this returns [EntryPoint.parse('testentry = testentry')]
In the same virtualenv, but running the Python3 interpreter directly the entry
points work in Debian Unstable:
$ python3
In the python3 interpreter:
$ import pkg_resources
$ list(pkg_resources.iter_entry_points('testentry'))
[EntryPoint.parse('testentry = testentry')]
This does not seem to be related to the upstream ipython package, as the bug is
not present when installing all of ipython3's dependencies and just grabbing
the package via pip. In a new Debian Unstable docker:
$ cd /root/
$ apt update && apt install --no-install-recommends -y python3-pip
virtualenvwrapper
$ apt install --no-install-recommends -y python3-backcall python3-decorator
python3-jedi python3-pexpect python3-pickleshare python3-pkg-resources
python3-prompt-toolkit python3-pygments python3-traitlets
$ pip3 install ipython
$ mkdir myentrytest && cd myentrytest/
$ echo "from setuptools import setup" >> setup.py
$ echo "setup(name='myentrytest', entry_points={'testentry': 'testentry =
testentry'})" >> setup.py
$ source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
$ mkvirtualenv --system-site-packages -p /usr/bin/python3 testing
$ pip3 install -e . # Inside the testing virtualenv
$ ipython3
In the IPython prompt:
$ import pkg_resources
$ list(pkg_resources.iter_entry_points('testentry'))
This returns the correct output: [EntryPoint.parse('testentry = testentry')]
-- System Information:
Debian Release: bullseye/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 5.4.0-4-amd64 (SMP w/16 CPU cores)
Kernel taint flags: TAINT_CRAP
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8),
LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages ipython3 depends on:
ii python3 3.8.2-2
ii python3-ipython 7.13.0-1
ipython3 recommends no packages.
ipython3 suggests no packages.
-- no debconf information