3

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.

enter image description here

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 
mgri
16.4k6 gold badges48 silver badges80 bronze badges
asked Apr 12, 2017 at 3:54

2 Answers 2

5

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 
answered Apr 12, 2017 at 4:03
13
  • That's great, thank you. Is there also a way to call it by typing into the console? Commented Apr 12, 2017 at 4:08
  • I updated the question to include imported files. Would you mind please updating your answer if possible? Commented Apr 12, 2017 at 4:24
  • @Joe answer updated Commented Apr 12, 2017 at 4:27
  • 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? Commented Apr 12, 2017 at 4:30
  • Have you tested it outside of QGIS ? was is the same case when you dragged the file ? Commented Apr 12, 2017 at 4:33
0

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.

answered May 22, 2023 at 0:15
2
  • 1
    While 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. Commented May 22, 2023 at 1:18
  • Done. Thanks @Vince . Commented May 23, 2023 at 1:17

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.