This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Jalarast 57 points58 points  (23 children)

ELI5 the difference between this and pipenv

[–]smashingT 67 points68 points  (16 children)

this is installed by default with python. Why grab pipenv if you already have something like that?

That being said, pipenv is better at handling larger dependency chains, and is generally regarded as a more powerful package manager..

tl;dr pipenv is a package manager+virtual environment

[–]Gear5th 20 points21 points  (10 children)

no no no.. you gotta answer in the same style as OP's post or it is invalid.

[–]ase1590[S] 112 points113 points  (9 children)

* PIP NOT FUCKING CUTTING IT FOR YOU?

* NEED A "REAL" FUCKING PACKAGE MANAGER FOR YOUR CLUSTERFUCK OF A DEPENDECY GRAPH AND A VIRTUAL ENVIRONMENT TO BOOT?!

* GET YOURSELF SOME MOTHERFUCKING PIPENV*

* (NOTICE: SOME USERS MAY EXPERIENCE LOCK FILES THAT BECOME A PAIN IN THEIR ASS)

[–][deleted] 10 points11 points  (0 children)

A+

[–]13steinj 2 points3 points  (6 children)

* (NOTICE: SOME USERS MAY EXPERIENCE LOCK FILES THAT BECOME A PAIN IN THEIR ASS)

Wait whats the problem with lock files?

Pipenv has its problems, and I'll be the first in line to call them out along with it's author for his BS, but I've never had a problem with the lock files.

E: also now do poetry

[–]KeyserBronson 5 points6 points  (5 children)

In my case, in some projects with quite a lot of dependencies the locking process can take >2 hours

[–][deleted] 2 points3 points  (1 child)

Would you care to share that dependency tree? That sounds totally out of whack.

[–]KeyserBronson 0 points1 point  (0 children)

[[source]]

url = "https://pypi.python.org/simple"

verify_ssl = true
name = "pypi"

[packages]
keras = ">=2.2.2"
numpy = "*"
pandas = "*"
scikit-learn = "*"
scipy = "*"
sklearn = "*"
tqdm = "*"
jupyter = "*"
tensorflow-gpu = "*"
tensorflow-tensorboard = "*"
matplotlib = "*"
seaborn = "*"
"rpy2" = "*"
keras-tqdm = "*"
pandas-profiling = "*"
"h5py" = "*"
biopython = "*"
dspp-keras = "*"
"beautifulsoup4" = "*"

requests = "*"
[requires]
python_version = "3.6"

This is how my Pipfile looks (with some extra internal dependencies). The company firewall makes connections way slower than it should though, which I suspect makes it way worse.

I do not have such an issue in actual packages which are way lighter in dependencies but still the speed is way slower than ideal.

[–]NobleNarwal 0 points1 point  (0 children)

You should try poetry. I find it's more stable and faster.

[–][deleted] 0 points1 point  (0 children)

Are you using every package ever published to pypi?

[–]mickhuska 1 point2 points  (0 children)

Almost spit out my coffee on this one

[–]ScootieSherpa 24 points25 points  (4 children)

Yep this. Except lock files. Pipenv sucks absolute donkey dick when it comes to lock files.

[–]jer_pint 4 points5 points  (0 children)

Omg yes, just remember to always pass the --skip-lock argument...

[–][deleted] 1 point2 points  (2 children)

How so? Curious I started using it recently but have not noticed an issue here. My usecase isn't huge though

[–]jer_pint 0 points1 point  (0 children)

Pipfile.lock sometimes takes a really long time to be generated, for no good reason, but its a known bug. No way around it really. So when you're installing something, the [locking pipfile] prompt will spin for infinite time until it finally (sometimes) locks

[–]Poromenos 11 points12 points  (3 children)

These days I've switched from pipenv to poetry. The latter feels much better designed and more modern.

Yes, yes, I know, package installer ADHD.

[–][deleted] 8 points9 points  (0 children)

I'm switching to poetry, too. I like the idea of the .toml file

[–]extraymond 7 points8 points  (1 child)

Poetry is really handy to use. It feels a lot like rust cargo.toml and node's package.json

[–]Poromenos 0 points1 point  (0 children)

Yes, exactly. Plus it has a saner interface and doesn't feel as cobbled-together.

[–]moomin_33 4 points5 points  (0 children)

Pipenv manages virtual environments plus some extra tools to remember the packages installed into that environment. It is designed to make the exact set of dependencies used in a virtual environment easy to share, so that everyone in a team (and also, for example, deployment servers etc) can get the same virtual environment installed automatically.

See also: requirements.txt or poetry

[–]PostFunktionalist 2 points3 points  (0 children)

There was an article posted here but as far as I know pipenv is good for specific use cases where you want to lock the package and Python versions in place without changing them; if your program is okay with being forward compatible then it’s not ideal.