Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on Subfolders for package-less module imports

Post

Subfolders for package-less module imports

+4
−1

Is there some sane way to allow Python to import from subfolders in projects that don't have a package?

I have many Python programs that I implemented as Python files inside a directory, without a setup.py file or other packaging boilerplate. I don't pip install these. Simply doing cd into the directory, and running files with python some_script.py is much more convenient.

The problem is when the program grows and I need modularize it. Python files can import other files in the same directory, but not in subdirectories. Alas, subdirectories are sometimes very useful.

How do you get Python files to import files from other directories? Is creating a package unavoidable in this case?

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

2 comment threads

Unclear due to possible hidden misconception (4 comments)
have you tried __init__.py files? (3 comments)
Unclear due to possible hidden misconception
Karl Knechtel‭ wrote 6 months ago

It's important to note here that the term "package" is overloaded here. For lack of better disambiguation: a distribution package is what you create by having a setup.py and/or pyproject.toml file, using a build backend such as Setuptools to create a "wheel" and/or "sdist", and optionally publish them to PyPI. An import package is what you create simply by having a folder in a place that Python will search for modules, such that you import the folder name in the source code and get a "package", which is actually just a module. It doesn't need an __init__.py file (that serves a more subtle purpose) and it is represented by the same type as a module created from a .py file (not even a subtype).

Anyway, I think this question is not quite organized right to be most useful for canonicals. I guess I'll have to prioritize the Q&As I had in mind on that topic....

Karl Knechtel‭ wrote 6 months ago

BTW, I think I have an old post on the site Meta where I laid out some possible future import Q&As. Seems like a good time for both of us to revisit that.

mr Tsjolder‭ wrote 6 months ago

I would argue that the ambiguity of the term "package" is a problem with Python rather than with this question. I could not imagine someone asking this kind of question to actually know about the ambiguity of "package".

Karl Knechtel‭ wrote 6 months ago

Now that I've read the self-answer, the intended scope of the question is clearer to me. I might propose an edit later.