import vs. subdirectory search

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • John Nagle

    import vs. subdirectory search

    Some obscure import issues:

    I'm running Python 2.3.4 from a CGI script on a shared hosting Linux system.
    The CGI program is being executed from Apache, as "nobody". I have some
    local modules installed in "~myname/lib/python"; these include
    "MySQLdb" and "M2Crypto".

    Since this is running as "nobody", I append

    /home/myname/lib/python

    to sys.path.

    Within the CGI programs,

    import MySQLdb # works fine
    import M2Crypto # works fine
    import SSL # "No module named SSL"

    The problem is that SSL is in a subdirectory of the M2Crypto directory,
    and that's not being searched. I can execute "import M2Crypto.SSL",
    but that doesn't have the same effect; it puts SSL in a different
    place in the namespace. I'm trying to avoid that; it causes obscure
    aliasing problems.

    On Python 2.4 under Windows 2000, importing from a subdirectory
    appears to work. Is that a Python 2.3.4 thing, or a Linux thing,
    or something else?

    (The idea is to be able to run (mostly) the same Python code on Windows, for
    test, and Linux, for production.)

    John Nagle
  • Gabriel Genellina

    #2
    Re: import vs. subdirectory search

    "John Nagle" <nagle@animats. comescribió en el mensaje
    news:45AED511.8 090307@animats. com...
    I'm running Python 2.3.4 from a CGI script on a shared hosting Linux
    system.
    The CGI program is being executed from Apache, as "nobody". I have some
    local modules installed in "~myname/lib/python"; these include
    "MySQLdb" and "M2Crypto".
    >
    Since this is running as "nobody", I append
    >
    /home/myname/lib/python
    >
    to sys.path.
    >
    Within the CGI programs,
    >
    import MySQLdb # works fine
    import M2Crypto # works fine
    import SSL # "No module named SSL"
    >
    The problem is that SSL is in a subdirectory of the M2Crypto directory,
    and that's not being searched.
    And should *not* be searched, unless the importing module is itself in the
    M2Crypto directory.
    I can execute "import M2Crypto.SSL",
    but that doesn't have the same effect; it puts SSL in a different
    place in the namespace. I'm trying to avoid that; it causes obscure
    aliasing problems.
    You *could* do: from M2Crypto import SSL, but I think this is not your
    problem.
    On Python 2.4 under Windows 2000, importing from a subdirectory
    appears to work. Is that a Python 2.3.4 thing, or a Linux thing,
    or something else?
    No, it should not work as you describe it. Either you have another SSL
    module in another place, or sys.path includes the M2Crypto directory.
    On your 2.4 Windows, try this:
    import sys
    import SSL
    print SSL.__file__
    print sys.path
    and see what happens



    Comment

    • gordyt

      #3
      Re: import vs. subdirectory search

      John try this:

      from M2Crypto import SSL

      That should put your SSL module in the namespace as you want.

      --gordy

      Comment

      Working...