我需要通过提供多种实现来使模块中的一个函数独立于平台,而不更改导入它的任何文件。以下作品:
do_it = getattr(__import__(__name__), "do_on_" + sys.platform)
...但是如果将模块放入包中则会中断。
另一种选择是使用 if/elif 来硬编码调用 do_it() 中的其他函数。
还有更好的吗?
将平台支持的代码放在包中的不同文件中。然后将其添加到人们应该从中导入的文件中:
if sys.platform.startswith("win"):
from ._windows_support import *
elif sys.platform.startswith("linux"):
from ._unix_support import *
else:
raise ImportError("my module doesn't support this system")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2710 次 |
| 最近记录: |