Path: csiph.com!eternal-september.org!feeder.eternal-september.org!border1.nntp.ams1.giganews.com!nntp.giganews.com!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!newsgate.news.xs4all.nl!nzpost1.xs4all.net!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'subject:Question': 0.05; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'python': 0.10; 'def': 0.13; 'applies': 0.15; 'packages.': 0.15; 'bump': 0.16; 'comprises': 0.16; 'missing?': 0.16; 'module?': 0.16; 'modules,': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'subject:import': 0.16; 'surprising': 0.16; 'circular': 0.18; 'project,': 0.18; 'split': 0.23; 'import': 0.24; 'example': 0.26; 'header:X-Complaints-To:1': 0.26; 'appreciated.': 0.27; 'wonder': 0.27; 'question': 0.27; 'package.': 0.27; "skip:' 10": 0.28; 'fine': 0.28; 'if,': 0.29; 'occasionally': 0.29; 'solution,': 0.29; 'comments': 0.30; 'that.': 0.30; 'another': 0.32; 'noticed': 0.32; 'getting': 0.33; 'know.': 0.34; 'that,': 0.34; 'something': 0.35; 'but': 0.36; 'project': 0.36; 'modules': 0.36; 'to:addr:python-list': 0.36; 'say': 0.37; 'received:org': 0.37; 'one,': 0.37; 'thought': 0.37; 'to:addr:python.org': 0.40; 'still': 0.40; 'provide': 0.61; 'different': 0.63; 'within': 0.64; 'here': 0.66; 'dangerous': 0.70; 'frank': 0.72; 'aaa': 0.84; 'odd,': 0.84 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: "Frank Millman" Subject: Question about import Date: Thu, 10 Sep 2015 09:12:29 +0200 Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: 197.89.14.191 X-MSMail-Priority: Normal Importance: Normal X-Newsreader: Microsoft Windows Live Mail 15.4.3502.922 X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3502.922 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.20+ Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 64 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1441869188 news.xs4all.nl 23726 [2001:888:2000:d::a6]:44090 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:96247 Hi all My project comprises a number of modules, split into packages. Modules frequently need to access the contents of other modules, in the same or in a different package. I am getting better at it, but I still occasionally bump my head against circular imports, and have to fiddle around until it settles down again. Not ideal, I know. I have just noticed something odd, and I wondered if it might provide a solution, or if it is a dangerous sidetrack. Here is a simple example - /test | start.py /a | aa.py /b | bb.py start.py import a.aa import b.bb a.aa.aaa() b.bb.bbb() aa.py import b def aaa(): print('in aaa') b.bb.bbbb() def aaaa(): print('in aaaa') bb.py import a def bbb(): print('in bbb') a.aa.aaaa() def bbbb(): print('in bbbb') c:\test>start.py in aaa in bbbb in bbb in aaaa The surprising thing is that, within aa.py, I just have to say 'import b', and I can access 'b.bb.bbbb', and the same applies to 'bb.py'. That makes me wonder if, in my project, I can import all modules inside 'start.py', and then just use 'import package_name' inside each module? Another question - I thought that, because aa.py and bb.py are in different sub-directories, I would have to set them up as packages by adding '__init__.py' to each one, but it works fine without that. What am I missing? I am using python 3.4. Any comments appreciated. Frank Millman