摘要:在 Python 中执行目录非常简单。我们所要做的就是确保该目录中存在一个 __main__.py 文件。通过一个例子来理解它。这里有一个文件__main__.py,其中包含以下内容:
Python 为提供了直接执行目录或 zip 文件的能力。这在 Python 社区中并不广为人知。因此,这篇博文旨在揭示这一点
在 Python 中执行目录非常简单。我们所要做的就是确保该目录中存在一个 __main__.py 文件。通过一个例子来理解它。这里有一个文件__main__.py,其中包含以下内容:
# file __main__.pyname = "Sarah"age = 27print("Hello {}!".format(name))现在,假设目录结构是这样的。
test/ __main__.py执行 __main__.py 文件或 test 目录将产生相同的结果。
roark:~/example/test$ python __main__.pyHello Sarah!roark:~/example$ python test # Run package as mainHello Sarah!这很容易。如果存在 __main__.py,则可以将目录作为脚本调用。因此,__main__.py 指定包的入口点。
Python 甚至可以类似地执行 zip 文件。在尝试之前,让先以 Pythonic 方式创建一个 zip 文件。
可以使用 standard 库中的 zipfile 模块从 shell 中使用 Python 实现这一点。语法如下:
instead of pip install
Since the former explictly calls out the Python verison where I want my package to be installed by binding Python with it's corresponding pip module.)-c is create file option
其中 zipname.zip 是我们想要的目标文件的名称,sourceDir 是源代码目录的路径。-m 选项将库模块作为脚本运行。在我们的示例中尝试上述命令:
roark:~/example$ lstest roark:~/example$ python -m zipfile -c test.zip test/*.pyroark:~/example$ lstest test.ziproark:~/example$ python test.zipHello Sarah!很酷。因此,Python 还可以将 zip 文件作为独立脚本执行。
更进一步,我们甚至可以在 zip 文件前面加上 shebang (#!) 以使其成为可执行文件并直接运行它。下面的代码段突出显示了相同的内容。
roark:~/example$ lstest test.ziproark:~/example$ echo '#!/usr/bin/env python3' > test_execroark:~/example$ cat test.zip >> test_execroark:~/example$ chmod +x test_execroark:~/example$ lstest test.zip test_execroark:~/example$ ./test_execHello Sarah!们让可执行文件运行并给出所需的输出。
注意:确保将 Python 二进制文件所在的位置放在正确的位置。如果 Python 直接安装在系统中,那么 shebang 很有可能是 #!/usr/bin/python3
总而言之,我们了解到,Python 不仅提供将目录作为脚本调用,甚至还提供 zip 文件,前提是我们有__main__.py文件作为执行的入口点。
来源:自由坦荡的湖泊AI