环境:
- Python:3.9
- PyCharm下的Virtualenv
在我正在编写的当前源代码中,我尝试:
- 动态检查是否安装了所需的依赖项
- 如果没有,则显示一条消息,程序停止,否则,转至3
- 源代码动态导入已安装的模块
- 代码在需要时照常使用模块
问题是代码在tkfilebrowser模块的(4)处失败。这是我的导入代码:
already_imported = {}
def do_import(dependency):
"""
Imports the dependency module
:param dependency: the name of the dependency module to import
:raise: ModuleNotFoundError if not found
:return: the imported module
"""
global already_imported
if dependency in already_imported:
result_module = already_imported[dependency]
else:
result_module = importlib.import_module(dependency)
already_imported[dependency] = result_module
return result_module
就在通话之后,这是上下文:
>>> tkfilebrowser = do_import('tkfilebrowser')
>>> dir(tkfilebrowser)
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
>>> type(tkfilebrowser)
<class 'module'>
>>> print(tkfilebrowser)
<module 'tkfilebrowser' (namespace)>
>>> tkfilebrowser.askopendirname()
AttributeError: module 'tkfilebrowser' has no attribute 'askopendirname'
我猜不出这里出了什么问题,也猜不出我应该如何正确使用该模块。
所有的东西都在源代码中工作。
问题是,我在PyCharm的Run配置中使用了一个不正确的Python二进制文件,所以,当我意识到这一点时,我立即更改了它,一切都很顺利。
因此,如果有人遇到类似的错误,只需确保您的virtualenv或您配置的Python环境确实在使用,而不是另一个。
在PyCharm:
编辑配置=>Python解释器