On 2019-12-13 8:53 a.m., paul Marlin wrote:
This is a variation of the many questions complaining that one can't import exotic external modules, even though the import works from the terminal. The many answers suggest fixing the execute command in the Build screen. The difference here is that I can't import a module from my own machine, but that it works at both the terminal and Idle. I suspect my problem is a PATH issue. Geany seems like a very nice editor/IDE. But if I can't import even my own modules, it's not very useful.
My simplified directory structure:
py - root for storing python MODULES (apps) and a module of user defined functions (included in PYTHONPATH)
----| main
main.py
----| common (for storing functions accessible by multiple modules
fun.py
The code:
_main.py_
from common import fun
fun.test()_ _
_fun.py_
def test():
print('testing')
_Ouput from Idle_
========================== RESTART: C:/py/test/main.py
testing
_
_
The path shown `C:/py/test/main.py` isn't how you described your layout, it should be `C:/py/main/main.py` according to how you described it.
_Output from Geany_
ModuleNotFoundError: No module named 'py'
Original exception was: Traceback (most recent call last): File "test.py", line 1, in <module> from py.common import fun ModuleNotFoundError: No module named 'py'
I'm not sure exactly what you're going for, but often you will have your main script in the top level, and then put common/library code in a package directory, with an (often empty) `__init__.py` file. Something like this:
- py - main.py - common - __init__.py - fun.py
If you lay it out like this, it "Just Works" out of the box with Geany's execute command for `main.py`, without messing with any path variables or anything.
If you want to leave it where `main.py` is in a directory that is a sibling of your common/library package, you will probably have to mess with paths and/or use some kind of relative imports.
I don't think your problem is with Geany as much as with trying to understand Python's quite complicated import mechanisms/rules/conventions.
Hope that helps.
Regards, Matthew Brush