Spyder – a free and open source scientific environment written in Python
spyder-ide.org
spyder-ide.org
Way back in time, maybe around 1998, a friend an I worked on a steganography tool that we called Spyder. I don't remember where it was published or under what license (probably freeware), but the algorithm was incorporated into Hide4PGP (http://www.heinz-repp.onlinehome.de/Hide4PGP.htm), and we stopped work on it.
This post just caused a bit of nostalgia. I can still remember my co-developer taking a break jamming on a bass guitar while we tried to figure out the striping problem (the solution was to compress the data to increase entropy first).
Edit. maybe this is what you're talking about? https://github.com/spyder-ide/spyder/commit/6b602af50f632cf6...
So, thanks to Kite's software, we implemented a client for it and now lightly promote it to our users, to offer them a possibility that works better, but it's completely optional.
We also consulted our community before adding Kite integration and they were favorable to it, that's why we decided to proceed with the idea: https://twitter.com/Spyder_IDE/status/1138466325532217346
But more important than that, we receive ~200 issues per month on Github (which makes us one of the projects in the PyData stack with higher values on this metric) and I don't remember a single one since we rolled out this feature that argued strongly to remove it. So either people dismiss our suggestion, or try it and decide if they like or not.
For me you're now just competing with every proprietary python IDE, which basically drops you of my list of tools to use or recommend (one can also use free PyCharm or VSCode or RStudio then, where you know, what you get...)
I respectfully disagree. First, the decision was not only mine, but from our team and community (see my post just above yours). Second, you are not losing any freedom by simply dismissing our message to take a look at Kite. And third, Kite doesn't track our users.
> Why make it a nagscreen (not sure about the extent of that), if you could just make it an option or a status message.
This is quite common in Hacker News: you're criticizing us without knowing how this works. We only show a message about Kite once. Then we show another message in the editor *if* our code completion machinery can't provide completions but Kite does. Both can be dismissed with a single click, that's it. These features are annoying for the user that started this thread because their settings are reset every day.
> For me you're now just competing with every proprietary python IDE
We are effectively competing with other editors and IDEs, with or without Kite. If giving the chance to (not forcing) our users to have better code completions makes us more competitive, I'm all for it.
It will suggest "" completions at the top of the list, even for incredibly mundane completions, which is apparently a "premium completion" which almost immediately results in a nagging popup that requests that we purchase the enterprise edition because "you are out of your daily premium completions". If anything, I wish the spyder team would completely disallow kite to push their product in that kind of way, because it completely goes against what open-source projects stand for.
After that, if a completion can't be provided by Jedi but it could by Kite, we show another message, which can dismissed entirely.
Both things don't force you to install Kite, but also show a button in case you want to do it within Spyder.
I do appreciate the work you do on Spyder though!
I really wish more software companies would re-think the startup nags all together. It is easy to say that 'oh we only show it once' but honestly who only installs a piece of software once in their life? I have probably clicked through the onboarding for microsofts browsers literally a thousand times now and I don't even work in IT. A typical user probably at least a dozen if not more, per piece of software...
The following is simply an FYI, not a complaint - I am very thankful for all that the open source community does on projects like Spyder.
I've used Spyder for quick tasks for many years but only use it rarely now due to the string formatting in the console.
Just this morning I copied a lot of text from the supplementary data of a paper, pasted it into Spyder, processed it, and output it to a nice tab separated table in the console. In other IDEs, I can copy that output and put it straight into my file and it works perfectly but Spyder now replaces all the tabs with spaces. That might be OK if the output were all numbers but the output has descriptions and then numbers in different columns so I end up having to output to a file instead of the console to get something usable. A minor issue, but it negates the value of a lightweight IDE.
In the past I had a lot of issues with unicode in Spyder where the exact same code worked well in command line python and in other IDEs.
Because of these types of issues I find that I'm better off just going to my heavyweight IDE instead of Spyder even for simple tasks if I don't want to do them from the command line.
But we also consider it a nice suggestion to our users, for a feature they've asked for years to make more reliable and robust.
https://github.com/atom-minimap/minimap/issues/588#issuecomm...
https://github.com/autocomplete-python/autocomplete-python/i...
Edit: Related HN thread with ~400 comments. https://news.ycombinator.com/item?id=14836653
It is also time consuming to properly install from source, via GitHub, versus Anaconda. It does have a learning curve in that sense, even for someone pretty experienced.
I am currently using Atom. I may switch to Sublime Text and add extensions to make it a Python IDE.
- the shortcut sends the selected code to the terminal (this is possible)
- if I hit the shortcut when nothing is selected, the line where the cursor currently is gets sent to the terminal and the cursor moves to the next line of code
- if the cursor is at the beginning of a block of code like an if-statement or a loop, the whole statement is sent to the terminal and the cursor moves to after the statement
RStudio has this behaviour by default, I find it very convenient and I haven't been able to replicate it in other environments.
It looks like Spyder now features Jupyter Notebook integration as well: https://github.com/spyder-ide/spyder-notebook
Executing the current line or the selected lines is just F9.
I prefer the control enter because I am used to enter to execute, but it is fine.
Certainly you can replicate that in Emacs?!
Important caveat: I’ve just recently upgraded from some really old versions to the latest spyder.
Now it throws off my work flow by continuously tripping code hints or suggestions or whatever. When I try and click into the interpreter I find now I’d better click two or three times instead of one — to subvert the type hint that is sure to push cursor focus back to the code. If I don’t do that I am suddenly typing into the code window that which was intended for the interpreter. It sucks and I need to find out how to fix it. Surely there is something I can do in settings to chill the hinting/or-whatever out.
Tools > Preferences
and then Completion and linting > Introspection
and disable there "Show calltips" and "Enable hover hints".— I am hoping to find some middle ground where I can still make use of some features. I’ll play around with it some more. I’d gotten discouraged by stack overflow discussion of similar issues where turning off various features wouldn’t stick.
2018 (a bit) https://news.ycombinator.com/item?id=16232940
2013 https://news.ycombinator.com/item?id=6622156
I had pretty much thought it was just a tool for people who normally work in R and Matlab to ease into python. Which I totally understand, but is there more to it? It is purely for scientific programming, or do people use it for other things too? Like would you ever write a Django app with it?
What am I missing out on by not using it? For my normal use, I am not seeing anything I can't do in VSCode. Is it worth checking out though?
I like Spyder over PyCharm for smaller projects because there's less startup cost and the code cells functionality is handy for the "edit and run this part until it does what I want" style of coding, which makes the bulk of my time in small projects.
For bigger projects, PyCharm's refactoring, commit diffing, code regions, and formatting are enough better to be worth the fuss. As a rule of thumb, if I'm going to bother to set up a dedicated environment / git repo / file structure / test suite, I'll typically use PyCharm, else Spyder.
Yes, I love this „quick and dirty” interactive style within Spyder too, but switch to PyCharm when I need to refactor, work with larger project or test. Sometimes I'd switch multiple times per day for the same project, so having a more Spyder-like DS tool under development at JetBrains seems to be good news.
Nevertheless it is my favorite IDE for Python.
Then you can connect them to your conda envs, as described here: http://docs.spyder-ide.org/current/faq.html#using-existing-e...
Also, thanks for a great tool!
Spyder is such a great tool and much more useful than Jupyter Notebooks for explorative DS work, imho. Thank a lot for maintaining it, Carlos. I don't mind the kite installer - but I've tried it out and found the completions pretty useless.
Too bad you had a bad experience with Kite, but (as I said several times here), it's completely optional.
I think they ought to call it DataStudio bc it’s multilanguage.
Also, I know ccordoba is here on HN. If you read this, know that you have immense respect from me for tirelessly maintaining Spyder for all these years (I started using it in 2009)
Of course, Pycharm has many other tools and a much better interface (Spyders scaling is grgrgrgrgr).
But for scientific data work? Spyder is great!
Like sure, I could drop into pdb and tediously work through printing things out (and good luck if you are printing out ndarrays or large dictionaries or wanting to look through instance variables for an instance in your local execution context) and take 4X longer to figure out why something isn't working, or just in a quick glance figure out exactly what the issue is. I guess I'll continue being a n00b developer happily relying on a variable explorer whenever available :o).
This is critical for scientific computing because you're constantly interacting with data (i.e. reading, cleaning, plotting and analyzing it), so having a dedicated pane for it is a great advantage.
Anyone who's dealt with huge data arrays appreciate it.
Also, just wanna say Spyder looks like it's come a long way in the last decade. Congrats on some fine work!
Spyder got me off Matlab nearly a decade ago. I had just learned Python and had trouble getting Matlab access in my lab (I was an undergrad working on radio astro data) and after many weeks fighting with our dept. IT over a license, I started using Spyder, and it was pretty awesome. So many thanks to everyone who worked on Spyder!
Oh yeah, this is so true! Ten years ago, when I joined the project, it was just Pierre (Spyder's original author) and me. Then, in 2016, Anaconda gave us the resources to hire three developers part-time to work on the project, which was a huge boost (between 2012 and 2016 it was mostly me and three or four volunteers).
Now we have a team of five people working part or full time on Spyder, all hired by Quansight: https://www.quansight.com/
So you can expect lots more good things to come in the future.
Maybe you could let Quansight know their homepage is a bit broken (at least on Firefox on Android): The "READ MORE" link shows up on top of the text.
>Eh, Streamlit and PyCharm is a much more powerful combination IMO.
What is you PyCharm + Streamlit use case and workflow? Just curious because I have just learned about Streamlit from your comment.
Okay, so maybe a variable viewer isn’t a bad thing. I just know from personal experience that people get in the habit of scrolling through large arrays, instead of learning numpy’s slicing and shape concepts, or functions that detect e.g. the index of NaNs... I think that was mainly my point.
You should give it a try with our new installers for Windows and macOS, which save you the trouble of installing Anaconda: https://github.com/spyder-ide/spyder/releases/tag/v4.2.1
As someone who loves Spyder and used it a lot many years back, I've had no trouble doing all my scientific/algorithm prototyping in Pycharm while benefiting immensely from the astoundingly superior code intelligence/auto-complete/type-hinting in Pycharm. There is also a "Code Cell" plugin you can download for Pycharm that basically gets you to parity with Code-cells in Spyder/Matlab.
For me, the excellent Python shell in Pycharm that supports multiline copy-paste, tab completion, and function-signature overlays makes prototyping algorithms and ideas much faster. That paired with the excellent history browser in Pycharm lets me easily grab relevant bits of code and promote them into a script or function and go from there. And then if you are trying to debug any algorithm, Pycharm is far superior on that front and I am far more efficient at debugging and fixing problems in Pycharm than in something like Vscode (though I do recall Spyder's debugger being pretty decent since it supports integration with IPython)
There is a steep learning curve with Pycharm initially, but imo it works just fine (and for me at least, much better) in comparison to other things like Spyder/Jupyter.
I would definitely recommend Spyder to most non-software engineer Python users, especially if they are in Data science. Nothing by <3 for Spyder's awesome data viewer widgets.
definetely agree. I prefer to work with code cells and prefer Spyder for being less bloated and more responsive than Pycharm, for having multiple iPython consoles and a nicer Plot window when doing DS work, though.
To me, PyCharms only shines when refactoring and testing code to make it production ready.
It'd be nice if we could use Neovim for text manipulations and show what comes back from it in our editor. If only days had 36 hours...
We just fixed this. Sorry for the inconvenience.
Justin case someone will find it useful and relevant. Our team is currently working on a brand new IDE (based on PyCharm) for data scientists.
A big part of what we're doing is convenient support for Jupyter notebooks within the IDE. This new IDE is currently under development but already provides the support for notebooks similar to how the native web Jupyter notebooks work – cells and outputs under each cell. The IDE's functionality will include SQL, Jupyter, Python, and R support.
If you'd like to try the early EAP builds of this new IDE with the new notebooks support, please fill out this short form: https://pages.jetbrains.com/pycharm-data-science-insiders
Once you’ve confirmed your participation, you’ll get a detailed email with instructions on how to download the early builds and details about how to share your feedback.
Will be also happy to answer questions if any.
Curious as to whether you'd say the approach you are taking is closer to Jupyter's binary cell approach or RStudio's Notebook's text-based approach.
Thanks!
I've also tried out PyCharm Professional, but the experience with cells and iPython was just worse for me than in Spyder - so I'm only using PyCharm for refactoring right now. I think the main problem was that errors/results from cmdstanpy would simply cause PyCharm to crash/hang instead of getting handled properly like in Spyder.
My ideal IDE would combine PyCharm's variable explorer and interactive debugger with Jupyter Lab's plotting, widgets, and the ease of rearranging cells. Oh, and I really need a duplicate line shortcut, which PyCharm, Spyder, and RStudio all have, but Jupyter doesn't for some reason.
I know many people use VS Code for data science, but I haven't used it much. If you have time, would you share your VS Code setup?
Cheers!
For what it's worth, our team is generally not a huge fan of notebooks, but I get why people like them.
But - no Julia support?
I played with PyCharm's implementation of notebooks in 2019. At that time, it felt like you didn't do any UX research and testing with professional data scientists, including data scientists across a range of age groups. For this reason, I stopped using PyCharm for analytical data science work.
I am mentioning it here, just because I would love for your new project to succeed. Good luck!
That's why we decided to create our own, self-contained installers for Windows and macOS: https://github.com/spyder-ide/spyder/releases/tag/v4.2.1
Since they are completely isolated and don't come with pip, they can't be broken. And you can connect them to other Python environments by following these instructions: http://docs.spyder-ide.org/current/faq.html#using-existing-e...
The naming seems pretty poor for me given that I'd assume that spyder would be a webcrawler written in python.
I use more advanced IDE when integrating the code I developed in Spyder into a larger code base. I’m sure many will criticize my workflow but I’ve tried doing other ways and this works best for me and I write less buggy code this way.
I used Eclipse years ago and am neutral on it. I can use it if I need to. Just wouldn’t be my go to. I can say same for PyCharm; it’s very powerful but me and PyCharm never really jelled (lol!).
Variable explorers and integrated charting/plotting can be fantastic for visualizing and understanding your data.
Cells in Jupyter are great for quickly iterating on data cleaning code.
When I was part of a scientific applications team at a past employer (state agency), we used Jupyter heavily while developing the core code for the data processing pipelines.
We were reading and processing data from instruments based on (bad) docs and notes from a former employee who reverse-engineered the format, so there was a lot of edge-case finding and testing. The notebooks fleshed out with comments and notes in Markdown upon completion and were saved within our repo as interactive documentation, demonstrating the more complicated processing steps in a far more approachable fashion.
Stop and consider that there are different tools for different purposes. Exactly the same way Word, Publisher, Photoshop, and Sublime or Vim are different from each other, so are things like PyCharm, VS Code, Jupyter, and Spyder.
A "full" IDE like PyCharm is designed for application development, including deep introspection of your code, deployment automation, tool integration for things like preprocessors (such as sass/less), and integrated support for VMs and Docker. This is overkill if you're writing a simple script, but helps for larger projects.
Something like VS Code is closer to PyCharm, but might not be as deeply integrated for any given language. It does provide a more consistent environment if you tend to work in multiple languages, which can help you avoid some of the context switching between langs.
Jupyter and Spyder serve a different purpose. They aren't the kind of thing you'd (usually) write a full application in, but it's exactly the kind of thing that would be useful to data scientist, or someone trying to explore a library. The re-executable cells in Jupyter are quite useful for quickly iterating on data cleaning code, since you can re-write and rerun a series of cells without rerunning expensive calculations or data loading.
I haven't used spyder in years (2008/9?), but it was a great way to put my fledgling python skills to use back then. I was performing a lot of data analysis on radio astro data in Matlab, but we only had so many 'roaming' licenses for our lab. Using numpy and spyder allowed me to practice my python and get my data analysis done outside of the lab.
So consider the fact that not all tools are suitable for the same thing, and that a 'senior' dev considers what tool is right for the job at hand.