Hello everyone !
So I am trying to build a snap for a project that contains multiple python projects, and fail to do so. The real use case can be found here: https://github.com/basak/certbot-snap-build. But I will simplify the case here to focus on the specific problem encountered.
Let’s suppose that I have a GIT repository, with two python project in it: project1
and project2
. Each project is properly configured with setuptools, and so each of them has a setup.py
. Also, project2
depends on project1
. The two projects are on version 0.1.dev0
on the GIT master
branch and are not released on PyPi. Since project2
requires new features added on project1
during development, its setup.py
declares a dependency as follow: project1>=0.1.dev0
.
If I want to setup a virtual environment with project2
and project1
, I can run pip install -e project1 -e project2
, and everything will work correctly since pip will see successfully that project1
on version 0.1.dev0
is installed locally when it tries to install project2
.
However, I failed at building a snap in this configuration. A typical snapcraft.yml
for this situation would leverage the python plugin into several parts like so:
parts:
project1:
plugin: python
source: https://github.com/myrepo.git
source-branch: master
source-subdir: project1
project2:
plugin: python
source: https://github.com/myrepo.git
source-branch: master
source-subdir: project2
after: [project2]
In this case, snapcraft cannot build the snap. More precisely, the pull
step on project2
fails with the typical following error:
ERROR: Could not find a version that satisfies the requirement project1>=0.1.dev0
It appears that snapcraft fails at seeing that project1
has been built and installed during the first part. So during the second part pip tries to retrieve project1
from PyPi on version 0.1.dev0
, but this version has not been released.
Do you have some ideas to fix this situation, and allow the project2
part to reuse the modules from project1
part ?
Kindly regards,
Adrien Ferrand