
​Pipenv: One Year Later and a Call for Help - sandGorgon
https://www.kennethreitz.org/essays/pipenv-one-year-later-a-call-for-help
======
coleifer
I find it very straightforward and obvious to use virtualenvs, which support
everything this project purports to do. What is this, then? Some porcelain and
convention around virtualenvs? Why do I need this?

~~~
zbentley
It is exactly porcelain and convention around virtualenvs, and its benefits
are, in brief: simplicity, security, and portability (as in operating
systems).

The most useful feature that motivated my switch to it was that it combines
the env manager and package manager so users only need to use one tool to
specify an environment and a set of packages, and to manipulate those
packages. This was extremely useful when getting lots of novice Python
programmers to start sharing code/build environments for their projects.

It additionally has a lockfile and hash-based package identification which
improves security (if I remember correctly, these things are possible with
straight pip/other package managers, but can either be disabled or are
disabled by default--but it's been awhile, so I may well be wrong!).

In short, it gives you a slightly more opinionated definition of what a
"project" (environment plus packages etc.) is, and in return the tool is much
simpler.

For more info: [https://docs.pipenv.org/](https://docs.pipenv.org/)

------
thalesmello
Pipenv solved the most annoying problem Python had before: inconvenient
version isolation. Dependencies were installed globally by default, and
virtualenv was too cumbersome to use easily. Pipenv solves all of those
headaches.

~~~
sjellis
"Pipenv solved the most annoying problem Python had before: inconvenient
version isolation. Dependencies were installed globally by default, and
virtualenv was too cumbersome to use easily. Pipenv solves all of those
headaches."

I've recently started using pipenv, and it has made me very happy. Ruby has
very polished tools for managing interpreter versions as well as dependency
management, and npm is OK, but before pipenv, Python was a slightly different
headache every time that I had to set up a project.

Basic usage of pipenv is like Bundler or npm, so it was very easy to get
started. It also has some extra features that Bundler doesn't have, and I
haven't yet tried: installing Python interpreters on demand, built-in project
code style checking, and security vulnerability checks on dependencies:

[https://docs.pipenv.org/advanced/](https://docs.pipenv.org/advanced/)

------
ageofwant
Big fan of Kenneth's work.

One thing that surprised me about pipenv though is the slugified virtualenv
name. I work on many virtualenvs a day and keep them all in ~/.virtualenv/, no
.env in the project, I use tree, and like code and artifacts to be seperate,
and the dev environment to mirror deploy as closely as a I can. spacemacs
loads them from there, my deploy mirrors this, and I use systemd units that
use the absolute path on the target platform. easy to use, easy to explain.

pipenv does not support this workflow though, something I thought was quite
common. Suggestions to allow this to be optional does not seem to be well
received
[https://github.com/pypa/pipenv/issues/589#issuecomment-33071...](https://github.com/pypa/pipenv/issues/589#issuecomment-330713212)

Maybe this is due to resourcing and will be fixed in time. For now, I just use
pipenv for dependency management, and still use virtualenv like before. I
would have liked to just use the one tool, but as it stands pipenv
unfortunately is not a one stop shop for me - I really hope one day it will
be.

------
drcongo
The pace of work on Pipenv is simply astounding. It breaks here and there,
hence this call for help I guess, but I'm endlessly impressed with it.

------
hyperknot
One thing in particular Pipenv/pipfile needs to address is a standardised
calculation of the hashed virtualenv paths.

I tried creating a PR for SublimeText's Anaconda plugin, and realised that
right now it requires 4(!) separate subprocess calls, each of which starts a
Python process to simply get the path of the current project's virtualenv.
Until there is a very simple way (a max. 10-20 line function) to calculate
this path, including a reference implementation in Python and JS, there is no
way widespread editor support can happen.

[https://github.com/pypa/pipfile/issues/88](https://github.com/pypa/pipfile/issues/88)
[https://github.com/pypa/pipenv/issues/985](https://github.com/pypa/pipenv/issues/985)
[https://github.com/DamnWidget/anaconda/issues/717](https://github.com/DamnWidget/anaconda/issues/717)
[https://github.com/DamnWidget/anaconda/pull/720](https://github.com/DamnWidget/anaconda/pull/720)

------
cmcginty
I'd love to hear a comparison to features provided by pip-tools. Managing the
pyenv is nice, but not at the expense of giving up the ability to auto-update
and remove stale dependencies from a requirements.txt file. Is this something
pipenv can handle at this point?

Someone created a very relevant issue, and I would suggest taking the time
needed to close this before doing any more publicity.
[https://github.com/pypa/pipenv/issues/1398](https://github.com/pypa/pipenv/issues/1398)

------
Teichopsia
It's a shame (for myself) that they are asking for previous open source
experience. I just started using pipenv a few weeks ago and it's fantastic and
would be inclined to help out, as long as someone would mentor me. Tough, I
guess that would add more work to them.

~~~
TotempaaltJ
It is an open source project though. You can definitely still help them out.
Have a look at their issues page:
[https://github.com/pypa/pipenv/issues](https://github.com/pypa/pipenv/issues),
fork the project and submit some PRs.

There you go: open source experience done!

------
photonios
I will devote some of my time to this. This project deserves some help.
Awesome work!

------
gt_
I tried Pipenv and loved it. I look forward to using it again. I wish I had
the skills to confidently contribute.

As a 3D artist, I have to use Windows a lot and Pipenv doesn’t cooperate well
with Windows shell.

~~~
kitotik
You could contribute by letting the team what windows issues you are having
perhaps?

From the pipenv site:

"Pipenv is a tool that aims to bring the best of all packaging worlds
(bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a
first–class citizen, in our world."

~~~
gt_
The problems I’ve had were already documented in open Github issues and
someone had found a hacky workaround for one of them, but they don’t appear to
have anyone trying to fix them. I could hardly comprehend the problems, as
they were well outside of Python. :( I have faith, though!

