Any words of wisdom on which I should be using as my daily python platform?
Nubie on python and don’t want to learn all the hard lessons the hard way.
Any words of wisdom on which I should be using as my daily python platform?
If you are on macOS, use Anaconda. If I were running python on Ubuntu or Windows I would use the system python.
Any reasons why for Anaconda macOS and not for windows?
It seems like Anaconda should do better with dependencies but I don’t know if there is a downside to that.
The python environment on macs has always been a troublesome place for me. I have screwed up every mac I’ve every run python. The system python is old and baked into system libs, and any attempt to install other versions always ends up with ambiguous permission errors because they versions are not really separated properly. I don’t know what the problem is and I don’t want to know. I would just stay away.
In case you are actually on mac I recommended this tutorial to setup an python env on mac:
Please make use of
Just throwing another voice onto the pile.
If you are primarily interested in scientific computing or data science things, I’d suggest Anaconda regardless: you’ll get basically everything you need, dependency-wise, in a single installation, without really having to care about your environment setup.
If you are on windows, I’d recommend Anaconda regardless. I have never found stock python pleasant on windows.
On a OSX or linux, using stock python works great as long as you don’t use the system python. In this case, you will always want to use some sort of environment management tool. For osx, I prefer
pyenv (as it makes installing multiple versions of python more sane), but any will do.
In short: configuring your python virtual environments is a tricky pitfall that is worth avoiding if you’re just getting started with python and Anaconda largely avoids the issue.
For learning python basics just install stock python on windows if that is your most familiar operating system.
When you decide to go deeper in machine learning you should consider anaconda on linux/ubuntu. Mostly because whatever tools/libraries are primarily used there, so you have best chances to find community support.
Windows might be fine as long as you don’t need a dependency that requires compilation… that normally needs gnu development tools/cygwin to make windows behave like a linux environment and … just having linux on a virtual machine would save a lot of hassle.
Anyway if you target a certain application/environment (e.g. NuPic) - ask those working with that environment what they recommend.
E.G if you want to learn OpenAI’s Gym their setup instructions target Linux and Mac only.
But to start learning python… no need to bother yet. Stock python is small and easy to install you won’t lose time or disk space or bandwidth with it.
I’ve been using python since birth (jk). Anyway I would recommend using the simplest method which is to use a virtualenv environment so your work can be self-contained as much as possible. Even better is to package your work/environment/platform into a docker image for portability and lesser dependencies to your laptop/desktop os.
In my case, I cannot remember any major issues with using Anaconda or the OS’s python environment. Most of the time I use a virtualenv to isolate my work. If some packages don’t install in a virtualenv, I use docker so that I won’t have to care so much OSX/Windows’s python environment. Admittedly though I don’t use Anaconda that much as I like my projects to be as simple as possible - as self-contained as possible. I hope this opinionated recommendations help. Good luck.
Yeah, once you learn how to setup virtual environments and understand why and how isolating your python installations works, using them is a no-brainer.
That said, it does increase the challenge of getting started with python – it can be a lot of work to understand why you are typing
python -m venv venv (or something similar), when and how to activate / deactivate your virtual environments, etc. For someone just starting out, that can be a barrier to learning and using python.
But yes, I strongly believe that, as one’s python expertise builds, making the jump to isolated installations (whether via virtualenv, pyenv, docker, or other methods) is a milestone that will need to be crossed at some point.
I use Anaconda Navigator on Windows 7 and 10, and also on various flavors of linux. For me, the most troublesome thing about python has always been getting the right versions of the right libraries installed without gumming up the system. Anaconda’s updater works more reliably for me than PIP.
Another pro for Anaconda Navigator is that you can use different dev tools depending on what you need at the moment. For example, I use IPython/Jupyter Notebook when I’m tinkering, but I use Spyder for doing bigger development (e.g. multi-file projects).
Agree but “starting out” is relative here, for someone starting out with programming experience, using virtualenv I believe is worth the extra learning curve.
I strongly recommend spending time learning virtualenv as this will compose a large part of your swiss knife! And yes you can bring it wherever you code, once you get the hang of it you’ll forget about Anaconda, Miniconda or etc.
Python virtualenv is part of PEP by the way, so it is officially recommended.
I am very far from starting out programming but I have avoided the OOP as much as possible.
I don’t understand the need for virtual environments
I am guessing that this may be like the old core memory days where you snap-shot’ed the whole machine on shutdown, and rolled the whole thing back in on restart. The whole state was sort of build brick-by-brick and recreating a given environment was a black art. Since it was such a pain to get everything to work in the first place these systems were subject to creeping-crud where little problems were easier to tolerate than fix. If you fixed this problem that other unrelated part broke.
Is this what I have to look forward to in my python adventure?
Virtual environments are a great way to switch between python installation. For instance, nupic runs on python 2.7 but your own programs run on python 3.8.
pyenv helps you switch between environments.
And in addition
pyenv can install the version you want just run
pyenv install --list. It can show you what environments you have installed
pyenv versions. And so on.
Pretty nice, isn’t it?
Actually - kind of depressing that I have to care about versions. I assume that the libraries will have the same version issues. I have not had to think about this with C or Perl for a very long time. One of the many reasons I avoid C++ or Microsoft database products.
Python is a multi-paradigm language and it is designed for getting the job done over “getting the job done by using this paradigm”.
Don’t be fooled by the term
virtual environments it’s really just a fancy name for isolating python runtime environments as much as possible from your OS or in turn other python projects. Using virtualenv is usually fool-proof.
Nope. Again it’s simply an isolation at file-system level (directory) of a python runtime environment and nothing more (sometimes there are exceptions but don’t apply on most standard usage). You can even literally copy paste a virtualenv to another directory and still will work (but a bad practice).
Definitely not. IMO as a long-time polyglot programmer with python as one of my core languages, I can say that python is the friendliest and most practical of them all. One of the reasons why people love it is because python helps people truly get things done from the embedded world, automation world, development, ML, and even to cloud platform applications.
Depending on the project you are working on and how the software was written, versions shouldn’t be of so much concern. For example, nupic was written for python 2.7 which is a design decision and not a language’s requirement. Python allows writing code for compatibility with specific versions. There was a major jump to python3 from python2 that caused language construct differences which eventually caused incompatibilities in these versions. Python has provided a solution for making things compatible (again getting things done), but it’s up to the developers to use it. Anyway if you’re starting out you won’t have to worry about this unless if, for some reason you need to use python2.7. I recommend start with python3 and forget pyhton2.
Language-wise, sure, but the ecosystem is sort of broke. But then most are.
I totally understand your sentiment. In a general point-of-view most ecosystems have their issues. In my experience again Python ecosystem issues are minor compared to other ecosystems. But then this assessment highly depends on soft dev preferences and experience as well.