Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4531560
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T13:55:14+00:00 2026-05-21T13:55:14+00:00

I have a Python package with several subpackages. myproject/ __init__.py models/ __init__.py … controllers/

  • 0

I have a Python package with several subpackages.

myproject/
  __init__.py
  models/
    __init__.py
    ...
  controllers/
    __init__.py
    ..
  scripts/
    __init__.py
    myscript.py

Within myproject.scripts.myscript, how can I access myproject.models? I’ve tried

from myproject import models # No module named myproject
import models # No module named models
from .. import models # Attempted relative import in non-package

I’ve had to solve this before, but I can never remember how it’s supposed to be done. It’s just not intuitive to me.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T13:55:14+00:00Added an answer on May 21, 2026 at 1:55 pm

    This is the correct version:

    from myproject import models
    

    If it fails with ImportError: No module named foo it is because you haven’t set PYTHONPATH to include the directory which contains myproject/.

    I’m afraid other people will suggest tricks to let you avoid setting PYTHONPATH. I urge you to disregard them. This is why PYTHONPATH exists: to tell Python where to look for code to load. It is robust, reasonably well documented, and portable to many environments. Tricks people play to avoid having to set it are none of these things.

    The explicit relative import will work even without PYTHONPATH being set, since it can just walk up the directory hierarchy until it finds the right place, it doesn’t need to find the top and then walk down. However, it doesn’t work in a script you pass as a command line argument to python (or equivalently, invoke directly with a #!/usr/bin/python line). This is because in both these cases, it becomes the __main__ module of the process. There’s nowhere to walk up to from __main__ – it’s already at the top! If you invoke the code in your script by importing that module, then it will be fine. That is, compare:

    python myproject/scripts/myscript.py
    

    to

    python -c 'import myproject.scripts.myscript'
    

    You can take advantage of this by not executing your script module directly, but creating a bin/myscript that does the import and perhaps calls a main function:

    import myprojects.scripts.myscript
    myprojects.scripts.myscript.main()
    

    Compare to how Twisted’s command line scripts are defined: http://twistedmatrix.com/trac/browser/trunk/bin/twistd

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have written a python package which consists of several .py files which contain
In a Python package, I have a string containing (presumably) the name of a
I have a standard python package layout like this: setup.py - using setuptools README
I want an app or python package that can 1.Dynamically add python script to
I have Python 2.6 and I want to install easy _ install module. The
If I have Python code class A(): pass class B(): pass class C(A, B):
Is it possible to have Python save the .pyc files to a separate folder
If I wanted to have Python distributed across multiple processors on multiple computers, what
Does Python have a unit testing framework compatible with the standard xUnit style of
Does python have the ability to create dynamic keywords? For example: qset.filter(min_price__usd__range=(min_price, max_price)) I

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.