Module organization

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Lasse Vågsæther Karlsen

    #1

    Module organization

    I am slowly learning Python and I'm already starting to write some minor
    modules for myself. Undoubtedly there are better modules available
    either built-in or 3rd party that do the same as mine and much more but
    I need to learn it one way or another anyway.

    What I'm wondering about is module organization.

    I created my own directory for storing my modules and added the full
    path to this to PYTHONPATH (Windows XP platform).

    This means that "import modulename" works for my modules now.

    However, the name of my module is "db" or "database", a module name that
    will likely conflict with other modules I might encounter later.

    As such, I was thinking of doing the same that the "distutils" set of
    modules have done, by creating a subdirectory and storing them there, so
    I created a "lvk" directory in that directory of mine and moved the
    module in there, but now "import lvk.modulename" doesn't find the module.

    Is there a trick to this? Do I have to store my own modules beneath
    C:\Python24\Lib ? or can I use the organization I've tried just with some
    minor fixes to make python locate my modules?

    --
    Lasse Vågsæther Karlsen

    mailto:lasse@vk arlsen.no
    PGP KeyID: 0x2A42A1C2
  • Robert Wierschke

    #2
    Re: Module organization

    Lasse Vågsæther Karlsen schrieb:[color=blue]
    > I am slowly learning Python and I'm already starting to write some minor
    > modules for myself. Undoubtedly there are better modules available
    > either built-in or 3rd party that do the same as mine and much more but
    > I need to learn it one way or another anyway.
    >
    > What I'm wondering about is module organization.
    >
    > I created my own directory for storing my modules and added the full
    > path to this to PYTHONPATH (Windows XP platform).
    >
    > This means that "import modulename" works for my modules now.
    >
    > However, the name of my module is "db" or "database", a module name that
    > will likely conflict with other modules I might encounter later.
    >
    > As such, I was thinking of doing the same that the "distutils" set of
    > modules have done, by creating a subdirectory and storing them there, so
    > I created a "lvk" directory in that directory of mine and moved the
    > module in there, but now "import lvk.modulename" doesn't find the module.
    >
    > Is there a trick to this? Do I have to store my own modules beneath
    > C:\Python24\Lib ? or can I use the organization I've tried just with some
    > minor fixes to make python locate my modules?
    >[/color]

    I'm also new to python. But I think the solution to your problem is:

    make the directory - lvk - a python package

    in order to do this you just add an file __ini__.py (two underscores
    befor and after init)in the directory.
    __init__.py can be empty or include some initialization for your package
    or a docstring for this package

    if you plan to use something like: from lvk import *

    there must be a variable __all__ in this __init__.py, which refers to a
    list of all modules that should be imported

    as mentioned I'm new to python and this might be wrong but give it a try

    Comment

    • bruno modulix

      #3
      Re: Module organization

      Lasse Vågsæther Karlsen wrote:[color=blue]
      > I am slowly learning Python and I'm already starting to write some minor
      > modules for myself. Undoubtedly there are better modules available
      > either built-in or 3rd party that do the same as mine and much more but
      > I need to learn it one way or another anyway.
      >
      > What I'm wondering about is module organization.
      >
      > I created my own directory for storing my modules and added the full
      > path to this to PYTHONPATH (Windows XP platform).
      >
      > This means that "import modulename" works for my modules now.
      >
      > However, the name of my module is "db" or "database", a module name that
      > will likely conflict with other modules I might encounter later.
      >
      > As such, I was thinking of doing the same that the "distutils" set of
      > modules have done, by creating a subdirectory and storing them there, so
      > I created a "lvk" directory in that directory of mine and moved the
      > module in there, but now "import lvk.modulename" doesn't find the module.[/color]

      What you want is a package:

      [color=blue]
      > Is there a trick to this? Do I have to store my own modules beneath
      > C:\Python24\Lib ? or can I use the organization I've tried just with some
      > minor fixes to make python locate my modules?[/color]

      briefly put, add an (even empty) __init__.py file in your lvk directory,
      and it should work fine (minus potential import problems in your
      modules, but that should be easy to fix...)

      HTH
      --
      bruno desthuilliers
      python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
      p in 'onurb@xiludom. gro'.split('@')])"

      Comment

      Working...