I've been using virtualenv + virtualenvwrapper for years. I hear complaints but I'm used to it now and it's pretty nice. Usually create a new environment for each project and pip install my packages into it.
Yep. Python 3 installed via brew. Then every project has its own virtual environment. You can specify the path to the python binary when creating a new env so you can specify whether you want it to use Python 3 or Python 2.
It’s simple. It’s easy to debug. I genuinely don’t understand the point of all this other nonsense like anaconda.
Unfortunately when it comes to data-science-Python it seems like the patients are running the asylum. The APIs and developer ergonomics of tools like tensorflow, pandas etc... are so bizarre to people who are running production, vanilla Python.
pandas keeps turning me off, even if I feel like I ought to like it; I feel like I never really know what is going on, and the syntax feels like a domain-specific-language tacked on top of python, and it just doesn't sit well (my opinion!). Besides... some of the functions have an insane number of parameters, e.g.
Learning pandas really does feel like learning a new language - new syntax, idioms and implementation details to be aware of. Much more so than other libraries imo.
Given how utterly powerful it is, I think that's OK.
Not sure a large list of optional params (with good documentation) is a bad thing though.
Callables requiring many parameters is often indicative that the code is doing too much, perhaps as coder after coder tweaked it to handle their particular use-case.
I am not a big fan of (the over-use of) optional arguments either: I prefer code I'm reading to be more explicit, which is more pythonic imo.
I disagree with the code is thus doing too much, however.
At least in this specific and some other cases, the method shown there is a wrapper to do a major task of converting data formats from one form to another.
These optional, well-documented arguments show the defaults used, and are modifiable in, as you said, specific use-cases.
I should have been more explicit but this is exactly what I'm doing. It's nice, having control over which version of Python I'm using by project. And if I name my virtualenv the same as my project directory, I can cd to the directory and "workon ." to load the environment.
I'm not a data scientist so I have little experience with these tools, except for Pandas, which I won't use unless I have to.