告诉 python 解释器在脚本本身中使用解释器命令行开关
Tell python interpreter to use a interpreter command-line switch in the script itself
是否可以使用特定的命令行开关告诉 python 解释器 运行 我的脚本。
例如,
如果我启用了 doctests,我想添加
if __name__ == '__main__':
import doctest
doctest.testmod()
创建一个独立的测试运行ner。
但是,这需要我添加 -v
切换到 运行 脚本:
python myscript -v
这在像 Sublime 这样的编辑器中并不总是很方便,因为 Sublime 的构建系统默认没有开关。我知道我可以创建自定义构建器,但与指定用于某些脚本的开关相比,这不是最佳选择。
是否可能,如果可能,如何?
更新
下面有人指出doctest案例涉及脚本标志而不是解释器开关。但我真的很想知道这两种情况。
此外,尽管 testmod(verbose=True)
可以解决该特定案例,但我仍然对原始问题感兴趣。
将verbose=True
传递给doctest.testmod
:
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
乱用命令行标志是错误的做法。
您可以考虑使用环境变量。
例如,
# from the command line
export VERBOSE_MODE=True
# in the Python code
import os
verbose_mode = os.environ.get('VERBOSE_MODE', False)
如果命令行上没有提供该标志,您可以将其作为后备机制。
我有点得到了我想要的。在具有 bash shell 的系统上,我可以简单地将以下内容添加到脚本的顶部
#! /usr/local/bin/python3 -m doctest -v
然后
chmod +x myscript.py
不知道如何用 Windows 做到这一点(也许等待 Win10 的 Linux 子系统),但幸运的是我主要在 macOS 上工作。
这也适用于其他命令行开关。
是否可以使用特定的命令行开关告诉 python 解释器 运行 我的脚本。
例如,
如果我启用了 doctests,我想添加
if __name__ == '__main__':
import doctest
doctest.testmod()
创建一个独立的测试运行ner。
但是,这需要我添加 -v
切换到 运行 脚本:
python myscript -v
这在像 Sublime 这样的编辑器中并不总是很方便,因为 Sublime 的构建系统默认没有开关。我知道我可以创建自定义构建器,但与指定用于某些脚本的开关相比,这不是最佳选择。
是否可能,如果可能,如何?
更新
下面有人指出doctest案例涉及脚本标志而不是解释器开关。但我真的很想知道这两种情况。
此外,尽管 testmod(verbose=True)
可以解决该特定案例,但我仍然对原始问题感兴趣。
将verbose=True
传递给doctest.testmod
:
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
乱用命令行标志是错误的做法。
您可以考虑使用环境变量。 例如,
# from the command line
export VERBOSE_MODE=True
# in the Python code
import os
verbose_mode = os.environ.get('VERBOSE_MODE', False)
如果命令行上没有提供该标志,您可以将其作为后备机制。
我有点得到了我想要的。在具有 bash shell 的系统上,我可以简单地将以下内容添加到脚本的顶部
#! /usr/local/bin/python3 -m doctest -v
然后
chmod +x myscript.py
不知道如何用 Windows 做到这一点(也许等待 Win10 的 Linux 子系统),但幸运的是我主要在 macOS 上工作。
这也适用于其他命令行开关。