[Tutor] How does one construct a module for import?

Sydney Shall s.shall at virginmedia.com
Mon Jun 2 19:05:29 CEST 2014


Thanks Steven I will try what you recommend.
You were correct.
Not understanding properly, I had constucted both a directory and a file 
in my module directory.
I can now correct it, I think.
Thanks for all your help
Sydney
On 02/06/2014 17:47, Steven D'Aprano wrote:
> On Mon, Jun 02, 2014 at 05:08:21PM +0100, Sydney Shall wrote:
>> Thanks for the detailed reply, Steven.
>> It seems that you have correctly identified my prblem.
>>
>> But I am still puzzled, because I do not know how this happened.
>> I simply copied the two files that I wished to import to a directory
>> called (nowMyModule).
>> It now contains only three files;
>> pwd
>> Out[99]:
>> u'/Users/sydney/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/MyModule'
>>
>> ls -l
>> total 32
>> -rw-r--r--  1 sydney  staff    29 Jun  2 16:31 __init__.py
>> -rw-r--r--  1 sydney  staff  2936 Jun  2 16:32 findGraphParametersV2.py
>> -rw-r--r--  1 sydney  staff  7147 Jun  2 16:32 plotDataV2.py
>>
>> What does the line above; total 32 refer to?
> It is the number of disk blocks used by the files, assuming 1024 bytes
> per block. In this example, the __init__.py file uses 29 bytes, and so
> requires a minimum of 1 block; the findGraph file uses 2936 bytes, so
> requires at least 3 blocks; the plotData file uses 7147 bytes, so it
> needs at least 7 blocks. I don't actually know where the remaining 21
> blocks end up. Possibly in the directory itself?
>
>> But when I do the following, this is what I get.
>>
>>
>> dir(plotDataV2)
>> Out[107]:
>> ['__builtins__',
>>   '__doc__',
>>   '__file__',
>>   '__name__',
>>   '__package__',
>>   'plotData',
>>   'pylab']
>>
>>
>> In the file plotDataV2, I have imported of course, pylab.
>> I do not know where plotData comes from although there is such a file in
>> another directory.
> You will have a line like
>
>      from findGraphParametersV2 import plotData
>
> or possibly:
>
>      plotData = 23  # or anything really, who knows?
>
> or
>
>      def plotData(): ...
>
>
> There's no way for us to tell what plotData is. But YOU can do it:
>
> print(plotDataV2.plotData)
>
>
>
> If that doesn't display enough information for you to identify what it
> is, try these two commands:
>
> print(repr(plotDataV2.plotData))
> print(type(plotDataV2.plotData))
>
>
>
>> dir(findGraphParametersV2)
>> Out[108]:
>> ['__builtins__',
>>   '__doc__',
>>   '__file__',
>>   '__name__',
>>   '__package__',
>>   'findGraphParameters',
>>   'np',
>>   'pylab']
>>
>> Here I have imported numpy as np, pylab and math which doers not appear?
> If math does not appear, you haven't imported it. Possibly you imported
> it in findGraphParametersV1 or findGraphParametersV3, but not V2.
>
> Or maybe you imported it, but then deleted it:
>
> import math
> del math
>
> Again, there is no way for us to tell what you've done just by the
> result.
>
>   
>> I do understand that I should have only ONE directory containing my own
>> Modules and only ONE copy of each file in that directory. But that is
>> what I thought I had done.
> Um, yes?
>
>
>> Do I undestand correctly that what I need to do is to have a single
>> directory, say called MyModule, in the directory ....site-packages. And
>> then I need to copy just once each of the two function files that I want
>> to be importable?
> No, I'm saying, *forget about directories of files*. Have ONE FILE per
> project. You seem to be confusing yourself into all sorts of knots by
> having multiple files trying to import other files. You're working with
> advanced functionality, packages, before you understand how to deal with
> basic functionality, modules and attributes.
>
>
> You currently have this:
>
> site-packages/                       # directory
> +--  MyModule                        # directory inside site-packages
> .....+-- __init__.py                 # file inside MyModule
> .....+-- findGraphParametersV2.py    # another file
> .....+-- plotDataV2.py               # yet another file
>
>
> Instead, I suggest you should have:
>
> site-packages/                       # directory
> +--  MyModule.py                     # file inside site-packages
>
>
> and put the contents of findGraphParametersV2.py and plotDataV2.py
> inside the MyModule.py file.
>
>
>

-- 
Sydney Shall



More information about the Tutor mailing list