我正在尝试定义一个函数,该函数导入模块并将该函数放置在我自己的模块中,这样当我在处理某种类型的项目时,我需要输入的就是:
import from user *
setup()
#setup is the function which imports the modules
但是,每当我尝试此操作时,它都根本不起作用。在我运行该函数后尝试调用安装程序中定义的模块,只会导致错误,表明未安装这些模块。
这是我模块中的代码:
def setup():
import keyboard, win32api, win32con
让我知道是否可以提供更多信息,谢谢您的帮助。
答案 0 :(得分:1)
我认为您遇到了范围问题,如果在其他模块中定义了设置,则导入将仅在该模块中有效(或者可能仅在需要测试的功能中有效)。
一般而言,“导入一切可能需要的”政策是我认为错误的。您的代码仅应导入其真正需要的内容。更好地将依赖性降低到最低限度和明确性。
答案 1 :(得分:1)
将名称显式地导入模块中通常是个好主意,这样您就可以知道它们的来源。 Explicit is better than implicit。但是对于交互式会话,有时一次导入负载很有用,所以...
您的问题是您的setup
方法将这些模块导入其自己的名称空间,该名称空间在函数外部不可用。但是您可以做一些简单的事情。如果您的user
模块刚刚包含:
import keyboard, win32api, win32con
然后在您的交互式会话中,您可以执行以下操作:
>>> from user import *
这些模块随后应在您会话的名称空间中可用。