I'm following along a book about the use of python for finance. And the author uses this line:
%matplotlib inline
Which does not compile.
So far I've figured out that it's Ipython that is being used, and that it's another interpreter than the python.
I'm using Eclipse with pyDev, and I'm looking for a solution so that I may continoue doing so.
I installed ipython through pip with pip install ipython and top of my .py file write
import IPython.ipapi
ip = IPython.ipapi.get()
But I'm getting
Traceback (most recent call last):
File "C:\Users\Rasmus\workspace\PythonFinance\src\FinanceExamples.py", line 5, in <module>
import IPython.ipapi
ImportError: No module named 'IPython.ipapi'
the ip = IPython.ipapi.get() does not give any errors. But if I comment out ip = IPython.ipapi.get() then it will.
Is it not possible to run Ipython with a python interpreter? Or have I missunderstood the entire relationship between them both.
I use python 3.5
Open Eclipse/PyDev and go to Window-->Preferences-->PyDev-->Interactive Console.
In the Initial Interpreter Commands filed add this 2 commands:
import IPython; IPython.embed()
After clicking in Apply and Close, press CTRL+ALT+ENTER (or select the code that you want to execute +F2) and IPython console will run. However, it seems not work very well. You will face on the message below if you try to run %matplotlib inline command:
IPython.core.error.UsageError: Invalid GUI request 'inline', valid ones are:dict_keys(['qt4', 'osx', 'pyglet', 'none', 'tk', 'qt', 'gtk3', 'glut', 'wx', 'gtk'])
You can use IPython interpreter in Eclipse/PyDev interactively - in a PyDev Console. (You can start it in the Console Menu. More: http://www.pydev.org/manual_adv_interactive_console.html.)
You don't need to add any extra lines to your file. All magic commands are usually executed in the console. (I think extra code is needed only if you want to run some magics in a script, not interactively). You can run your code line by line copying it from the editor or - faster- highlighting it and pressing F2.
The command %matplotlib inline probably wouldn't work in PyDev Console. It's designed rather for IPython Notebook. Nevertheless, try running it there and you should get some error with a hint what to use instead "inline", for example:
IPython.core.error.UsageError: Invalid GUI request 'inline', valid ones are:dict_keys(['qt4', 'osx', 'pyglet', 'none', 'tk', 'qt', 'gtk3', 'glut', 'wx', 'gtk'])
Also, you get some help displayed when you execute %matplotlib? (with the question mark).
tried with:
import matplotlib.pyplot as plt
and run
plt.show()
Looks like that gives the same results.
Related
I was trying to run below command but getting invalid syntax error
$python
python 3.7.4
linux
>>> !ls
File "<stdin>", line 1
!ls
^
SyntaxError: invalid syntax
>>exit()
This is the shell assignment feature of IPython, not a core part of Python itself. The fact that you don't see the In [1]: style of prompts (you have >>>) means that you're not running IPython.
If you want to run a shell command from "normal" Python, the usual approach is with something like:
import os
os.system("whatever")
Just keep in mind the shell assignment feature is a tad more powerful than that.
If you need that feature, and you have IPython correctly installed, just run ipython instead of python.
if you are running it in jupyter notebook, it should work.
Based on the code, it shows you are running it on command prompt or shell.
if you are running it in command or shell prompt the Exclamatory symbol didnt work.
Try this approach
import os
os.system('ls')
After installing matplotlib. I am getting this error while using this command :
$ import matplotlib
import-im6.q16: attempt to perform an operation not allowed by the security policy `PS` # error/constitute.c/IsCoderAuthorized/408.
Can anyone help me solve this?
This happens to me if I run import from the shell. Demonstration:
$ import
import-im6.q16: missing an image filename `import' # error/import.c/ImportImageCommand/1289.
This askubuntu question tells me that import is a built-in ImageMagick command.
Solution
You first have to start a Python interactive prompt:
python
>>> import matplotlib
Depends on how you do import matplotlib
The problem can be solved with just one of the following solutions.
If you're using the Python interpreter, the one from the command line, then this shouldn't happen because you are simply importing the module.
If you wrote the line of code in a Python file, suppose we call the file myfile.py, and you're trying to execute it on the command line like ./myfile.py then it's wrong because you have to write on the command line python myfile.py or python3 myfile.py, if you're using Python3
You can simply specify the python interpreter on your file by adding at the first line of the file #!/bin/python or #!/usr/bin/python and then on the command line you can simply run your file like a bash file ./myfile.py
You are calling import matplotlib not from the python shell, but from the system shell. The error you are seeing is from the import command, which according to man import saves a portion of a screen to an image. This also happens if you execute a script by calling it without putting a shabang on the first line (like #!/usr/bin/env python3)
See the other, older answers. They are very good.
Another possible reason: It might be a cut-and-paste-from-clipboard error.
You may have blanks before your #!/usr/bin/env python3 line, and at the beginning of all following lines. Thus your script is still a valid python-script but the shell cannot interpret the #!/usr/bin/env python3 line. It thus reads your script as a bash script.
It might help to remove the whitespace; or call the script with
python3 myscript.py
I want to set %xmode Verbose to get error messages in greater detail, but since I always need it, I rather want to set it at launch.
So I tried adding it on at the bottom of my jupyter_notebook_config.py, but then when I launch it again, it got the following error:
Exception while loading config file /Users/me/jupyter/jupyter_notebook_config.py
SyntaxError: invalid syntax
However, I also added import os, sys, random, asyncio, argparse at the bottom of the file, which did not lead to the error. So I feel the magic command does not work at the config file.
So is there any way to enable Verbose debug mode at default in Jupyter notebook?
Clarification
This question is about Jupyter notebook (open via jupyter notebook), not IPython (open via ipython). I found the %xmode command works in IPython config file (which I have actually used) and want to enable it on Jupyter notebook as well, which is my point.
Go to ~/.ipython/profile_default/startup.
Create a file named 00-set-traceback-mode.py.
Add the following lines:
from IPython import get_ipython
ip = get_ipython()
ip.InteractiveTB.set_mode(mode="Verbose")
You have done.
I am fairly new to programming in python. I installed anaconda and am running iPython (the Jupyter qtconsole) v.4.3.0 and python v.3.6 on a Mac. Currently, I am trying to import a module with functions located in my home directory.
I have looked at stackoverflow and python documentation and found that it could be done with:
%run "Users/myUser/python_functions.py"
or
import python_functions
However, when I try both of these approaches, I get prompted to overwrite the file that I am running or importing:
File `python_functions.py` exists. Overwrite (y/[N])?
This is changing the previous file and not getting the functions I want to be imported.
What may explain this, and what can I do to import my module?
this is wrong but leaving it up for shame
import on ubuntu (and I'm guessing many other unix-like OSs including Mac) is a utility that saves any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen.
My guess if you are running the import command in your console, and it's about to take a screenshot and save it over an existing file - python_functions
Before you the use the python import command, start a python interpreter:
$ python
>>>import yourfile
edit: on re-reading your question, I'm not so sure about my guess anymore, but leaving it up until you tell me I'm wrong :)
Running Jupyter qtconsole as an interpreter is likely causing the problem in this scenario. Instead using a IDE or command line interpreter will resolve it .
Since anaconda was installed, trying it with the IDE Spyder executes the code just fine without the overwrite prompt. It works on others (e.g PyCharm, Rodeo, etc.) as well.
When I try to edit a function ( printval in my example ) defined in Enthought canopy Ipython using the command,
%edit printval .
I get the following error message on a pop up with a notepad opened in the background.
The filename,directory name ,or volume label syntax is incorrect.
The notepad is blank after I click the pop up message. This error is happening in windows Ipython.
Also I invoked Ipython using the following command
ipython qtconsole --pylab=inline --colors=Linux
Can anyone help to find what can be the problem .
Works for me. Are you sure that the function name printval is already in your ipython namespace when you give the command %edit printval? You can check this by seeing whether printval? refers you to your function as expected, or gives an error. If printval isn't in your ipython namespace, then ipython has no way to know what you mean by printval.
For example, if you have already done from mymodule import printval,
then %edit printval should work.
If this doesn't address the issue, please provide a minimal example including all steps to reproduce the problem.
UPDATE after this followup information from user: " File: c:\users\tester\<ipython-input-5-cc5d372a3507>"
This shows that the function was not defined in a file as typically done, but rather interactively at the ipython prompt. This complicates the answer, thus:
When a function is defined in a (non-temporary) file, then %edit functionname works as desired in all versions of ipython - it opens that file for editing.
However when the function is defined interactively at an ipython prompt, as in this user's case, then the actual behavior depends on the version of ipython and which ipython/jupyter interface you are using. What one would like is for a temporary file to be opened, the function definition be copied into that file for editing, and then after the editor closes, for the function definition to be re-executed (i.e. for the function to be re-defined) based on those edits.
Indeed, this desired behavior is implemented in simple text-mode ipython terminal (e.g. if you type ipython at a Canopy Command Prompt).
However, this desired behavior has never been implemented in ipython/jupyter QtConsole (e.g. if you type jupyter qtconsole at a Canopy Command Prompt), and as far as I can tell, it is not currently planned by the jupyter team, most of whose effort seems to be focused on the jupyter notebook and jupyter lab projects.
Because Canopy is a GUI application, Canopy's ipython prompt is a QtConsole, not an ipython terminal prompt. Therefore Canopy does not implement the behavior that you want, and will not in the foreseeable future.
The (minor) good news is that in the most recent version of QtConsole, the error message is more explicit. It says "InteractivelyDefined" which at least gives a hint that the function that you were editing was defined interactively and is therefore not directly editable.
The workaround, of course, is to manually copy-paste the function definition source code into the Canopy editor (which automatically strips out the ipython prompts from the clipboard, making this very simple to do), edit the function there, and run that file.