What is so bad about virtual environments? I found them to be really nice and useful when I developed in Python over about 5-ish years. It was really nice being able to have separate clean environments for installing libraries and executing things.
Granted, I only used Python as a solo developer, so if there are shortcomings that emerge when working with other developers, then I would not be aware of them…
Edit: also, performance is a bit more of a subtle topic. For numerical logic, Python actually is (probably) much better than a lot of its competitors thanks to numpy and numexpr. For conditional logic, I would agree that it’s not the best, but when you consider developer velocity, it’s a clearly worthwhile tradeoff since frameworks like Django are so popular.
They’re a solution to a self-inflicted problem. They’re only “really nice and useful” if you accept that having your projects stomp all over each others’ libraries and environments is normal.
If projects were self-contained from the outset then you wouldn’t need an additional tool to make them so.
thankfully Python seems to be moving away from the “activating your venv” nonsense. If you use poetry or uv, you don’t necessarily need to “activate” it before running your code; though a lot of people still try to do it because of learning inertia I guess.
What is so bad about virtual environments? I found them to be really nice and useful when I developed in Python over about 5-ish years. It was really nice being able to have separate clean environments for installing libraries and executing things.
Granted, I only used Python as a solo developer, so if there are shortcomings that emerge when working with other developers, then I would not be aware of them…
Edit: also, performance is a bit more of a subtle topic. For numerical logic, Python actually is (probably) much better than a lot of its competitors thanks to numpy and numexpr. For conditional logic, I would agree that it’s not the best, but when you consider developer velocity, it’s a clearly worthwhile tradeoff since frameworks like Django are so popular.
They’re a solution to a self-inflicted problem. They’re only “really nice and useful” if you accept that having your projects stomp all over each others’ libraries and environments is normal.
If projects were self-contained from the outset then you wouldn’t need an additional tool to make them so.
thankfully Python seems to be moving away from the “activating your venv” nonsense. If you use poetry or uv, you don’t necessarily need to “activate” it before running your code; though a lot of people still try to do it because of learning inertia I guess.