Python: what does “import” prefer - modules or packages?

后端 未结 2 1813
你的背包
你的背包 2021-01-17 09:59

Suppose in the current directory there is a file named somecode.py, and a directory named somecode which contains an __init__.py file.

相关标签:
2条回答
  • 2021-01-17 10:34

    Packages will be imported before modules. Illustrated:

    % tree .
    .
    |-- foo
    |   |-- __init__.py
    |   `-- __init__.pyc
    `-- foo.py
    

    foo.py:

    % cat foo.py 
    print 'you have imported foo.py'
    

    foo/__init__.py:

    % cat foo/__init__.py
    print 'you have imported foo/__init__.py'
    

    And from interactive interpreter:

    >>> import foo
    you have imported foo/__init__.py
    

    I have no idea where this is officially documented.

    Edit per comment: This was performed with Python 2.7 on Mac OS X 10.6.7. I also performed this using Python 2.6.5 on Ubuntu 10.10 and experienced the same result.

    0 讨论(0)
  • 2021-01-17 10:45

    tested in Windows 10 (Python version 3.5) and on Ubuntu Linux (Python version 2.7 and 3.5) using the following directory:

    https://github.com/alphaCTzo7G/stackexchange/tree/master/python/order_import_module_vs_package

    Result

    The module is always loaded and the following message is printed out every time:

    "you have imported foo/init.py"

    So it seems to be consistent across these Systems, that the package is loaded first.

    0 讨论(0)
提交回复
热议问题