Package: dh-virtualenv
Version: 1.3
Severity: normal

Dear Maintainer,

packages built with dh-virtualenv leave files behind in
/opt/venvs/<pkg> after "dpkg -r" and even after "dpkg -P".

Python writes bytecode at runtime for the modules of the virtualenv
that were installed without it, for example the setuptools seeded by
virtualenv. dpkg does not know about these files, and the prerm
autoscript only removes lib/python*/__pycache__/*.pyc, not the
__pycache__ directories in site-packages.

With a test package built with "dh $@ --with python-virtualenv
--setuptools" in sid:

    $ dpkg -i hello_0.1_amd64.deb
    $ /opt/venvs/hello/bin/python -c 'import setuptools'
    $ dpkg -r hello
    dpkg: warning: while removing hello, directory
    '/opt/venvs/hello/lib/python3.14/site-packages/setuptools/config'
    not empty so not removed
    [...]
    $ dpkg -P hello
    $ find /opt/venvs -type f | wc -l
    82

The .deb ships 319 .pyc files; using the package added 82 more, and
all of them stayed after purge.

Removing every __pycache__ directory under the virtualenv in the prerm,
like py3clean does for regular Python packages, leaves nothing behind.

Nico Della Torre


-- System Information:
Debian Release: forky/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 7.2.9+deb14-amd64 (SMP w/12 CPU threads; PREEMPT)
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE=it
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Reply via email to