在动态实例化成员中导入 ftplib class
Import ftplib in dynamically instanciated member class
基于this template,我想创建自己的 CLI 界面来管理我们的服务。基本上这个 CLI 框架使用检查将 CLI arguments/commands 与模块 'commands' 中的成员 class 匹配,并通过 .run()
方法
实例化它
我的命令之一应该是 'fetch',它基本上是从 FTP 服务器下载一些数据。
所以我的命令模块中有一个 fetch.py class。
当我现在在这个动态实例化的模块成员中执行 from ftplib import FTP
时,它会立即失败,并在 ftplibsocket.py 中出现奇怪的 TypeError
看来,ftplib 在以这种方式导入时存在问题(其他库,如 json 工作得很好)。
- 这种方法(getmember() 并对其调用 运行())在使用其他标准 python 代码时是否有任何限制?
- 我是不是做错了什么?
似乎 ftplib 是唯一在动态加载模块中导入时出现问题的模块。
因此,在我需要它来获取一些文件之前,我动态加载了 ftplib 本身。 importlib
帮我这个忙:
ftplib = importlib.import_module('ftplib')
之后我就可以用经典的方式使用 ftplib:
with ftplib.FTP(config['FTP']['Host']) as ftp:
ftp.login(user=config['FTP']['User'], passwd=config['FTP']['password'])
基于this template,我想创建自己的 CLI 界面来管理我们的服务。基本上这个 CLI 框架使用检查将 CLI arguments/commands 与模块 'commands' 中的成员 class 匹配,并通过 .run()
方法
我的命令之一应该是 'fetch',它基本上是从 FTP 服务器下载一些数据。
所以我的命令模块中有一个 fetch.py class。
当我现在在这个动态实例化的模块成员中执行 from ftplib import FTP
时,它会立即失败,并在 ftplibsocket.py 中出现奇怪的 TypeError
看来,ftplib 在以这种方式导入时存在问题(其他库,如 json 工作得很好)。
- 这种方法(getmember() 并对其调用 运行())在使用其他标准 python 代码时是否有任何限制?
- 我是不是做错了什么?
似乎 ftplib 是唯一在动态加载模块中导入时出现问题的模块。
因此,在我需要它来获取一些文件之前,我动态加载了 ftplib 本身。 importlib
帮我这个忙:
ftplib = importlib.import_module('ftplib')
之后我就可以用经典的方式使用 ftplib:
with ftplib.FTP(config['FTP']['Host']) as ftp:
ftp.login(user=config['FTP']['User'], passwd=config['FTP']['password'])