如果包存在,是否可以告诉Python 2.7仅解析函数定义?
我有一个在多台机器上运行的脚本.脚本中定义了一些非常好的函数,但脚本执行的核心操作不需要这些函数.运行脚本的某些机器没有该函数导入的软件包(并且无法在其上安装软件包).目前,我必须在将repo克隆到这些机器上之前注释掉函数定义.另一种解决方案是维持两个不同的分支,但这更加乏味.有没有一种解决方案可以防止我们在推送之前不断注释掉代码?
调用函数时已有解决方案,例如:
try:
someFunction()
except NameError:
print("someFunction() not found.")
Run Code Online (Sandbox Code Playgroud)
Wan*_*uta 11
函数定义和导入只是Python中的代码,与其他代码一样,您可以将它们包装在try:
try:
import bandana
except ImportError:
pass # Hat-wearing functions are optional
else:
def wear(hat):
bandana.check(hat)
...
Run Code Online (Sandbox Code Playgroud)
wear仅在bandana模块可用时才会定义该功能.
这是否是一个好主意取决于你 - 我认为在你自己的脚本中会很好,但你可能不想在其他人会使用的代码中这样做.另一个想法可能是做这样的事情:
def wear(hat):
try:
import bandana
except ImportError:
raise NotImplementedError("You need the bandana package to wear hats")
else:
bandana.check(hat)
...
Run Code Online (Sandbox Code Playgroud)
这样可以更清楚地说明为什么不能使用该wear功能.