I have 2 main concerns about PEP 582 that might just be me misunderstanding
My first concern is the use of CWD, and prepending ./_pypackages_ for
scripts. For example, if you were in a directory with a _pypackages_
subdirectory, and had installed the module "super.important.module". My
understanding is that any scripts you run will have "super.important.module"
available to it before the system site-packages directory. Say you also run
"/usr/bin/an_apt-ly_named_python_script" that uses "super.important.module"
(and there is no _pypackages_ subdirectory in /usr/bin). You would be
In this case, this adds no more version isolation than "pip install --user",
and adds to the confoundment factor for a new user. If this is a
misunderstanding of the pep (which it very well might be!), then ignore that
concern. If it's not a misunderstanding, I think that should be emphasized
in the docs, and perhaps the pep.
My second concern is a little more... political.
This pep does not attempt to cover all the use-cases of virtualenvs - which
is understandable. However, this also means that we have to teach new users
*both* right away in order to get them up and running, and teach them the
complexities of both, and when to use one over the other. Instead of making
it easier for the new user, this pep makes it harder. This also couldn't
have come at a worse time with the growing use of pipenv which provides a
fully third way of thinking about application dependencies (yes, pipenv uses
virtualenvs under the hood, but it is a functionally different theory of
operation from a user standpoint compared to traditional pip/virtualenv or
Is it really a good idea to do this pep at this time?
In a vacuum, I like this pep. Aside from the (possible) issue of unexpected
shadowing, it's clean and straight forward. It's easy to teach. But it
doesn't exist in a vacuum, and we have to teach the methods it is intended
to simplify anyways, and it exists in competition with other solutions.
I am not a professional teacher; I don't run python training courses. I do,
however, volunteer quite a bit of time on the freenode channel. I get that
the audience there is self-selecting to those who want to donate their time,
and those who are having a problem (sometimes, those are the same people).
This is the kind of thing that generates a lot of confusion and frustration
to the new users I interact with there.