question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Pipenv ignores conflicts between default and development dependencies

See original GitHub issue
Describe your environment
  1. OS Type: OS X
  2. Python version: Python 3.6.3
  3. Pipenv version: pipenv, version 8.3.1
Expected result

Suppose I have a default dependency that depends on six==1.10.0 and a development dependency that depends on six==1.11.0.

I expect to get some sort of error here, because it’s impossible to satisfy both transitive requirements simultaneously.

Actual result
$ pipenv graph
dep-bar==0.0.0
  - six [required: ==1.11.0, installed: 1.10.0]
dep-foo==0.0.0
  - six [required: ==1.10.0, installed: 1.10.0]

Pipfile.lock is great, too, featuring:

    "default": {
        "dep-foo": {
            "editable": true,
            "git": "git@github.com:taion/dep_foo.git"
        },
        "six": {
            "hashes": [
                "sha256:0ff78c403d9bccf5a425a6d31a12aa6b47f1c21ca4dc2573a7e2f32a97335eb1",
                "sha256:105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a"
            ],
            "version": "==1.10.0"
        }
    },
    "develop": {
        "dep-bar": {
            "editable": true,
            "git": "git@github.com:taion/dep_bar.git"
        },
        "six": {
            "hashes": [
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
            ],
            "version": "==1.11.0"
        }
    }
Steps to replicate
[[source]]

url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"


[packages]

dep_foo = {git = "git@github.com:taion/dep_foo.git", editable = true}


[dev-packages]

dep_bar = {git = "git@github.com:taion/dep_bar.git", editable = true}

Issue Analytics

  • State:closed
  • Created 6 years ago
  • Comments:38 (20 by maintainers)

github_iconTop GitHub Comments

4reactions
audiolioncommented, Dec 19, 2017

Thanks for the reads @kennethreitz , I think if people read these it will help them empathize with your situation. I won’t deny that I have been frustrated by the terse responses or the closed issues with no comments before, but I also know that you are doing this with your own free time and have so much going on so when I consider that it is easy to quell those feelings and try to be respectful as possible.

Pipenv has started to be recommended as the tool to use and has come under higher scrutiny as a result. When things break between minor releases, when easter eggs cause crashes, when things break unexpectedly due to Pipfile lock resolution issues, it culminate in a lot of pressure due to the expectation that this is a product designed for everyone to use and should be the standard. I believe this is the source of frustration for many people who are spending many hours moving projects over to pipenv and updating docs and workflows for pipenv, to then run into showstopping bugs that are met with the aforementioned terse responses and closed issues. This signals to me at least that the product is not ready yet due to lack of resources and support and thus should not be advocated so highly until such time as it is ready.

1reaction
jsattcommented, Dec 4, 2017

This is biting me this morning with Django 2.0 being released over the weekend.

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[requires]
python_version = "2.7"

[dev-packages]
django-debug-toolbar = "==1.9.1"

[packages]
django = "==1.8.18"

Since debug toolbar has a requirement of “django>=1.8” it separately matches “django==2.0” which of course causes a problem on Python 2.7. If pipenv install --dev is going to always respect the merged result of packages and dev-packages dependencies, I think that locking should as well.

For others hitting this, my workaround for now is add django = "<2" to dev-packages.

Edit: Error I was getting is Command "python setup.py egg_info" failed with error code 1 in /tmp/tmplI41p5build/Django/. Hopefully that makes this issue more Google-able.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Frequently Encountered Pipenv Problems - Read the Docs
Make sure your dependencies actually do resolve. ... Pipenv by default uses the Python it is installed against to create the virtualenv.
Read more >
How do you resolve conflicting sub-dependencies with pipenv?
I have conflicting sub-dependencies from packages that installed via pipenv, which are preventing me from generating a Pipfile.lock.
Read more >
Advanced Usage of Pipenv - Python Packaging Authority
Dependencies of wheels provided in a Pipfile will not be captured by $ pipenv ... passing --dev will include both the default and...
Read more >
Pipenv and S2I: A better way to manage Python ...
The Pipenv packaging tool and Source-to-Image (S2I) help keep the proper Python dependencies in containerized applications.
Read more >
Common Pipenv Errors - Towards Data Science
You can resolve pre-release version conflicts by adding the pre flag to the installation command pipenv install --pre . After this command, your ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found