I am attempting pack a cli tool write by python3, but it heavily relies on the venv module.
I tried add python3-venv
as stage-packages but dont work.
Is there any other way besides build my own python3 interpreter inside snap?
Thanks.
I am attempting pack a cli tool write by python3, but it heavily relies on the venv module.
I tried add python3-venv
as stage-packages but dont work.
Is there any other way besides build my own python3 interpreter inside snap?
Thanks.
As you probably already know, usually venv is only used when developing and using python packages and versions, to keep them aside from the system packages. As snaps are already isolated, there’s no real need for it inside the snap.
Is it possible to untwine venv from the process?
Are you able to share the name/repo of the tool?
pipx, a python tool install and run python applications in Isolated Environments. heavily relies on the venv module.
snapcaft.yaml
name: pipx
base: core22
adopt-info: pipx
summary: execute binaries from Python packages in isolated environments
description: |
...
architectures:
- build-on: amd64
- build-on: arm64
grade: stable
confinement: strict
apps:
pipx:
command: bin/pipx
plugs:
- home
- network
- removable-media
environment:
PIPX_HOME: $SNAP_USER_DATA
PATH: $PATH:$SNAP_USER_DATA/.local/bin
parts:
pipx:
plugin: python
source-type: git
source: https://github.com/pypa/pipx
source-tag: '1.5.0'
source-depth: 1
override-pull: |
craftctl default
craftctl set version=$(git describe --tags --abbrev=0)
stage-packages:
- python3-venv
prime:
- -bin/Activate.ps1
- -bin/activate
- -bin/activate.csh
- -bin/activate.fish
Now it gives me those error message:
$ pipx install cowsay
The virtual environment was not created successfully because ensurepip is not
available. On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.
apt install python3.10-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: /home/ubuntu/snap/pipx/x2/shared/bin/python3
'/snap/pipx/x2/bin/python3 -m venv --clear /home/ubuntu/snap/pipx/x2/shared' failed
Ah, how fun!
I suspect you need to bodge the PYTHONPATH to go along with PIPX_HOME?
Thanks, i tried , didn’t work.
I found no way to add a venv moudle to core22 python interpreter unless compile my own python3 runtime inside snap manually which increase package size significantly.
So maybe this tool isn’t suitable for snap for now …