Open squalou opened 2 weeks ago
I have one additional required dependancy unfortunately on client : python3-dev
, or else netiface wheel wont compile.
Which in the end with transitive deps makes it roughly the same size.
Still, only 'regular' python tools. So, wondering.
I'm happy to consider a PR for this change. I don't think either python3-venv or python3-dev are large enough to be a disk-space concern on the client.
So far it works but before submitting a PR I have optimizations to consider.
To be honest, I'm facing a weird pythonic situation, maybe you could help, at least help understand.
python3-netifaces
is a package that exists, and is already installed (required by netwokmanager and the likes)
The package provides this :
/.
/usr
/usr/lib
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/python3/dist-packages/netifaces-0.11.0.egg-info
/usr/lib/python3/dist-packages/netifaces-0.11.0.egg-info/PKG-INFO
/usr/lib/python3/dist-packages/netifaces-0.11.0.egg-info/dependency_links.txt
/usr/lib/python3/dist-packages/netifaces-0.11.0.egg-info/top_level.txt
/usr/lib/python3/dist-packages/netifaces-0.11.0.egg-info/zip-safe
/usr/lib/python3/dist-packages/netifaces.cpython-312-x86_64-linux-gnu.so
/usr/share
/usr/share/doc
/usr/share/doc/python3-netifaces
/usr/share/doc/python3-netifaces/README.rst.gz
/usr/share/doc/python3-netifaces/changelog.Debian.gz
/usr/share/doc/python3-netifaces/copyright
But, I don't know how to make use of this in a created venv.
When I try to build the vend with netifaces
in requirements, it builds it (hence the python-dev package requirement)
Is this 'normal' ? isn't there a way to refer to system lib ?
With python-dev installed, everything ends up ok, with this in the venv
/var/client-venv
$ find . | grep netiface
./lib/python3.10/site-packages/netifaces.cpython-310-x86_64-linux-gnu.so
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/INSTALLER
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/LICENSE
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/zip-safe
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/METADATA
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/REQUESTED
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/RECORD
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/top_level.txt
./lib/python3.10/site-packages/netifaces-0.11.0.dist-info/WHEEL
answering to self - partly
looks like --system-site-packages
in venv creation is a solution.
What would you think of this ? I don't know if it's an issue to 'break isolation' like this but anyway python runtime is on system, isn't it ?
EDIT. Looks like not to break everything there should be two requirements.txt, one without netifaces (requirements.txt) , the other one only netifaces (say requirements-system.txt) create venv with --system-site-packages
and then activate venv, and pip install --ignore-installed requirements.txt pip install requirements-system.txt
ALL this to prevent python-dev 30 Mo package, and be exposed to a system lib present or not, or evolve, or break, or be removed.
SO : I have my own answer, it's a very bad idea :)
I'll go with python3-dev dep.
PR will come as soon as tested
PR #49 open, tested on debian and mint, needs at least Arch testing first.
Tested with Arch, works fine. Indeed, all 'dev' things are included in python package so there's no additional requirement.
Hi,
I'll do this in my local installation, and I think it would be a minor yet interesting change.
It would required one less '3rd party' dependency, or, to be fair : a dependency native to python 3.3+ and most of the time included with python when distributed. (and there are far less transitive dependencies than with virtualenv package)
Arch includes it in python3 package, debian-like have a
python3-venv
package.Posting this here in case you think of a reason why not to proceed that I could have missed.