Python如何找到它的模块
严格来说,一个模块是一个单独的Python文件,而一个包是一个包含Python文件的文件夹,还有一个(可以为空)名为__init__.py
的文件,告诉Python这是一个可以从中导入模块的包。在这两种情况下,模块需要有.py
扩展名,但导入它们时不需要扩展名(请参见下文)。
默认情况下,Python在$PYTHONPATH
中查找它的模块和包。
要查看$PYTHONPATH中包含了哪些内容,请在Python(3)中运行以下代码:
import sys
print(sys.path)
如何添加目录
偶尔
在Python文件中,您可以通过在Python应用程序或脚本的头部部分添加以下行来偶尔将路径添加到默认路径中:
import sys
sys.path.insert(0, "/path/to/your/package_or_module")
例如:
如果我有一个文件夹:/home/myname/pythonfiles,并且我想要导入位于该目录中的文件module_1.py,我将以下内容添加到我的代码头部部分:
import sys
sys.path.insert(0, "/home/myname/pythonfiles")
我可以通过以下方式简单地导入文件
module_1.py
:
import module_1
当我创建一个
包并且想要从包中导入模块时,我需要在
$PYTHONPATH
中创建一个文件夹,其中包含模块,并附上一个(可以是空的)名为
__init__.py
的文件。
例如:
要从名为
my_package
的包(文件夹)中在
/home/myname/pythonfiles
中导入,将
/home/myname/pythonfiles
路径添加到
$PYTHONPATH
中,就像示例1那样,并通过以下方式简单地导入包文件夹内的
module_2.py
模块:
`
from <packagename> import module_2
将目录永久添加到$ PYTHONPATH:
将以下行添加到您的~ / .profile文件中。
export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
子目录
在包内部,子目录不会自动包含;您需要“链接”这些目录。要导入文件夹packagename
中subfolder
文件夹内的模块module_3.py
:
import packagename.subfolder.module_3
鉴于包中的所有子文件夹都包含自己的
__init__.py
文件。
当一个模块与脚本或应用程序位于同一目录中时,
无需插入模块的路径,因为它会自动添加。
例如:
如果我有一个包含
script.py
和
module.py
的文件夹,我可以通过以下方式简单地导入该模块:
import module
__init__.py
文件吗?这是Python创建包并允许你从该包中导入模块的方式。http://guide.python-distribute.org/creation.html - Bryan