inconsistent behavior with transitive dependencies from local source archive #2173
Labels
Category: Dependency Resolution
Issue relates to dependency resolution.
Category: VCS
Relates to version control system dependencies.
Type: Bug 🐛
This issue is a bug.
Type: Regression
This issue is a regression of a previous behavior.
✔️ Be sure to check the existing issues (both open and closed!)
Several issues indicate ongoing, positive progress in this domain, but I don't see any other issues for this specific behavior.
pipenv install '-e .'
doesn't save dependencies #1024 (comment)✔️ Describe the issue briefly here.
$ pipenv install ./SomePackage-1.0.4.tar.gz
works as expected, including installing required dependencies as specified in that package'sinstall_requires
section ofsetup.py
.Pipfile
andPipfile.lock
, future use ofpipenv install
does not install the required packages as specified in that package'sinstall_requires
section ofsetup.py
.Doesn't work on my machine (I blame myself, years of accumulated cruft on this machine, homebrew, and OSX), but this may be useful:
Expected result
Having installed a local source archive file (
$ pipenv install ./SomePackage-1.0.4.tar.gz
) and checked in the resulting, updatedPipfile
andPipfile.lock
(and possibly the source archive itself), others should be able to clone this repo and have a fully baked pipenv-managed virtual environment by running$ pipenv install && pipenv install -d
.Actual result
Users who clone this repo and run
$ pipenv install && pipenv install -d
are unable to run tests and such because the pipenv-managed virtual environment is missing transitive dependencies from the local source archive.Those users can fix themselves by running
$ pipenv install ./SomePackage-1.0.4.tar.gz
on their machine.Steps to replicate
I put together a concrete example of this behavior:
$ pipenv install && pipenv install -d
$ pipenv run pytest -vv
. This will fail withE ModuleNotFoundError: No module named 'google'
due to missing protobuf dependency from the library.$ pipenv install -v ./dependency/samplelibrary-0.0.1.tar.gz
to forcibly reinstall the local archive. Take note of the log lines:$ pipenv run pytest -vv
and see the tests now pass because the transitive dependency on protobuf has been satisfied.$ git status
and note that neitherPipfile
orPipfile.lock
has changed, which indicates that the forcible reinstall of the dependency didn't change anything.Commentary:
$reasons
can't go to a private PyPI.The text was updated successfully, but these errors were encountered: