Iāve been reading through the discussion again prior to another round of updates. Other than requests for clarifying language like āwhat is an installerā/āwhat is an environmentā etc, Iām noticing two things here:
- Concerns that UX of tooling isnāt supposed to be a PEP.
- Concerns that having a single virtual environment workflow documented as the default is problematic because single virtual environment based workflows donāt cover all use cases/workflows.
For the first⦠I guess Iām hitting a governance/process issue. Iād figured that weād want this to be a widely discussed thing that benefits from going through the same framework as a PEP, so why not make this a PEP. And the counter argument of we donāt do PEPs like that is⦠frustrating but fair. Iām not sure what to do about this. I donāt think that discussing this only on pipās issue tracker is the right way to go about this because it affects not just pip but also how it interacts with multiple other things! I guess Iām hitting the wall of our process not fitting what I think we need here, and Iāll take that discussion to a separate thread.
For the latter⦠I know and agree. Nothing is blocking you from having a multiple virtual environment workflow or having a workflow where thereās a centralised management of virtual environments ā having a consistent default suggestion isnāt going to block projects that need more complex workflows from continuing to use them.
Regarding conda, if we draw the line as Conda environments are basically system environments rather than Python environments because Conda ships everything, the obvious cororally to that is that it shouldnāt be treated differently and should require virtual environments. Now, it is well known and well documented that conda and pip interoperability isnāt great and that the two operate on different metadata models. This PEP would effectively enforce a clear split between managed-by-conda and managed-by-pip. Now, Iāll admit, with this view, Iām suggesting that we break user workflows ā and, that aspect of this PEP should be better clarified; Iāll do so. I do think that enforcing this clear separation between managed-by-pip and managed-by-conda packages will be a good thing.
Itās a balancing act though, and if folks think that we should be doing something different, Iām all ears.
This PEP currently does not require any sort of automatic activation of environments. That will be a stumbling block for people who want a no-extra-steps workflow. However, it also means that weāre changing a subtle failure/thing-that-would-cause-issues-later with an explicit error which will also provide guidance on what to do. Subjectively, I think thatās a better place to be in since consistent errors and clear guidance are better than inconsistent failure modes and difficult to find/locate/apply guidance.
Agreed. No one is saying that you need to create a virtual environment to use Python. The PEP is saying you should be creating a virtual environment for installing and using third-party software; by default. Thereās an opt-out for workflows that need it.
Perfect, youāre the exact sort of user persona that I want to have an opt-out for.
FWIW, this isnāt limited to sciences.
This is generally what gets recommended for reusable functionality vs business logic, for example.
I noticed that I didnāt clarify when I responded to this earlier: the proposal is that in-tree virtualenvs are good-enough to be a default suggestion while being easy-enough to discover and reason about. The difference is perhaps subtle but important. To be explicit, theyāre not universally the best!
I wasnāt sure how to respond to this or whether to let this slide unresponded to. Iām reading this as implying that this is what is happening here and be careful to not do it ā if so, IMO that is not correct. Avoiding that from happening is literally why I wanted this to be something thatās not just discussed on pipās issue tracker.
FWIW, I guess I should clarify that the things that the PEP suggests arenāt āthings someone likes and wants to push on everyoneā. The whole point of this PEP is to change a workflow expectation: that pip itself can be used outside of virtual environments and itāll unpack to the user-site or system-site by default. If we donāt want to change that workflow expectation, thatās fine. I donāt have a horse in this race; how a PEP like this changes things for experts who maintain Python or Pythonās packaging tooling isnāt really something I want to optimise for, Iād much rather focus on the UX aspects here for the broader audience.