【发布时间】:2018-11-08 11:30:57
【问题描述】:
假设我有一个文件my_plugin.py
var1 = 1
def my_function():
print("something")
在我的主程序中我导入了这个插件
import my_plugin
有没有办法通过类似返回语句的方式静默禁用此插件?
例如,我可以像这样“掩盖”my_function 的行为:
def my_function():
return
print("something")
我想知道是否可以为模块执行此操作,以根据我对整个项目的尝试来打开和关闭它。所以像:
return # this is invalid, but something that says stop running this module
# but continue on with the rest of the python program
var1 = 1
def my_function():
print("something")
我想我可以将所有内容都注释掉,这样就可以了……但我想知道是否存在更简洁的东西
--- 目的: 这背后的想法是我有一个可以通过插件扩展的大型代码库。有一个插件目录,因此主程序在该目录中查找并运行其中的所有模块。用例只是在导致问题的插件中放置一个小终止开关,作为临时删除或移动文件的替代方法
【问题讨论】:
-
看看stackoverflow.com/questions/437589/…。在 python 中卸载模块可能很棘手
-
我从来不需要这样做。你的用例是什么?这可能是您可以从主程序中解决的问题,以决定是否要导入。
-
您可以将整个模块内容放在
if语句下。您可以将import语句放在if语句下。您可以对该模块进行猴子补丁-加载存根模块并将其放入sys.modules['my_plugin'] -
@RobertSeaman 我在问题中添加了我在做什么的解释,谢谢
-
(考虑到您的编辑)这违反了python的禅宗。 “显式胜于隐式。”您应该单独加载每个插件,然后根据需要从主文件中添加或删除它们,而不是加载所有插件。
标签: python