Reputation: 1207
I have a python script technically named /home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_BMP085_example.py
The first line of this script is
from Adafruit_BMP085 import BMP085
Also located in this directory is a python file named Adafruit_BMP085 that has a function BMP085.
I want to create a python script in /home/pi
that imports the same BMP085.
I've tried:
from /home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085/Adafruit_BMP085 import BMP085
But this just gives me a syntax error:
SyntaxError: invalid syntax
I've tried various syntax combinations of this same method, but cannot find one that works.
Upvotes: 10
Views: 78250
Reputation: 6795
In my case, the problem was a combination of
It happened when using a device with MicroPython, and these were the symptoms:
(1) import mymodule
from the REPL prompt didn't show any problem!
(2) running this code from my main module:
try:
import mymodule
except Exception as e:
print(e, '|', e.errno, '|', e.value, '|', e.args)
was giving this result at the 'import' line, without revealing the problematic source:
invalid syntax | invalid syntax | invalid syntax | ('invalid syntax',)
(3) but when I did a direct import from the main module, I found the problem:
Traceback (most recent call last):
File "main.py", line 3, in <module>
File "mymodule.py", line 126
so... be careful when wrapping import with try/except
Upvotes: -1
Reputation: 2988
OP's question is generically titled but the post is specific to a particular import
case.
In my case, I was getting a SyntaxError
when having a very standard import
scenario. The error was directly pointing at the import statement, very confusingly.
What was actually happening was that there was a (very subtle) syntax error in the module being imported. Fixing that error resolved the SyntaxError during import.
This was very confusing because Python reported SyntaxError
on the import line, rather than forwarding to the internal module's syntax problem (which, I believe, sometimes it does); even a generic ImportError
would've been more helpful. I wasted time thinking it was some module/path naming issue.
Upvotes: 4
Reputation: 1
I had the same problem. The problem first occured when upgrading to Jessie on RPI. The cause was probably within the pathing. Added below line to Python program:
sys.path.append('/home/pi/Adafruit-Raspberry-Pi-Python-Code/Adafruit_BMP085')
Now problem solved.
Upvotes: -2
Reputation: 1122342
You need to add the /home/pi/Adafruit-Raspberry-Pi-Python-Code
path to the module search path in sys.path
:
import sys
sys.path.append('/home/pi/Adafruit-Raspberry-Pi-Python-Code')
from Adafruit_BMP085 import BMP085
or move the Adafruit_BMP085
package to a directory already in your sys.path
.
The directory of the script itself is also part of the sys.path
, so you could also run:
$ cd /home/pi/Adafruit-Raspberry-Pi-Python-Code
$ cp Adafruit_BMP085/Adafruit_BMP085_example.py .
$ python Adafruit_BMP085_example.py
Upvotes: 15