Situation: I have a Python file called 'Hello.py' and another Python file called 'File1.py'. Hello.py imports File1.py.
Hello.py code is:
print 'hello people'
import File1
File1
File1.py code is:
print 'hello world'
The files are located:
My files is located C:\Program Files\QGIS 2.18\PyPack\
Using 'OSGeo4W.bat' provided in the QGIS directory, I execute the following commands:
C:\Program Files\QGIS 2.18>cd C:\Program Files\QGIS 2.18\PyPack
python Hello.py
And the output is:
hello people
hello world
What do I type in this window to run Hello.py, which gives the output? enter image description here
I have tried:
1 - dragging the 'Hello.py' file into the QGIS Python console
2 - the following command:
execfile(u'C:\Program Files\QGIS 2.18\PyPack\Hello.py'.encode('mbcs'))
3 - I tried to open 'Hello.py' in the QGIS python editor and run it with the same output.
And the outputs were:
hello people
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\QGIS 2.18\PyPack\Hello.py", line 2, in <module>
import File1
File "C:/PROGRA~1/QGIS2~1.18/apps/qgis/./python\qgis\utils.py", line 607, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named File1
2 Answers 2
1) Just drag the python file to frame of python in QGIS.
2) Another way:
execfile(u'C:/hi.py'.encode('mbcs'))
To import python modules while working on QGIS, write below lines:
import sys
sys.path
sys.path.append("C:/PyPack") #Add this folder to python environment path
import File1
-
That's great, thank you. Is there also a way to call it by typing into the console?LHo– LHo2017年04月12日 04:08:32 +00:00Commented Apr 12, 2017 at 4:08
-
I updated the question to include imported files. Would you mind please updating your answer if possible?LHo– LHo2017年04月12日 04:24:44 +00:00Commented Apr 12, 2017 at 4:24
-
-
I get this output: execfile(u'C:\Program Files\QGIS 2.18\PyPack\Hello.py'.encode('mbcs')) hello people Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Program Files\QGIS 2.18\PyPack\Hello.py", line 2, in <module> import File1 File "C:/PROGRA~1/QGIS2~1.18/apps/qgis/./python\qgis\utils.py", line 607, in _import mod = _builtin_import(name, globals, locals, fromlist, level) ImportError: No module named File1 ...... I might need to update the one of the python files to make the import work in QGIS Python console?LHo– LHo2017年04月12日 04:30:11 +00:00Commented Apr 12, 2017 at 4:30
-
Have you tested it outside of QGIS ? was is the same case when you dragged the file ?Shiko– Shiko2017年04月12日 04:33:53 +00:00Commented Apr 12, 2017 at 4:33
Python 2 builtin function "execfile" was removed in Python 3.0, now you can use:
exec(open(r"C:\Program Files\QGIS 2.18\PyPack\Hello.py".encode('utf-8')).read())
On this line, we open the .py file (assuming it was saved with the usual "utf-8" encoding), then get the content as a string, and finally run the code in the Qgis python console line by line.
-
1While it's okay to Answer an answered question, you really need to put more than a single line in such an Answer, explaining what is different or better about your solution.Vince– Vince2023年05月22日 01:18:04 +00:00Commented May 22, 2023 at 1:18
-
Done. Thanks @Vince .Pablo Manera– Pablo Manera2023年05月23日 01:17:03 +00:00Commented May 23, 2023 at 1:17