Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的动态模块导入(代码从3.2到3.3)_Python_Windows_Python 3.x_Python Import_Python Module - Fatal编程技术网

python中的动态模块导入(代码从3.2到3.3)

python中的动态模块导入(代码从3.2到3.3),python,windows,python-3.x,python-import,python-module,Python,Windows,Python 3.x,Python Import,Python Module,我需要动态导入模块并创建类。 这是我在Python 3.2中的工作代码: klass = {} mod = __import__('sites.' + self.className + '_login', fromlist=[self.className]) klass[self.className] = getattr(mod, self.className) klass[self.className](**self.args) 该模块位于“站点”文件夹中。它称为my_site_login,

我需要动态导入模块并创建类。
这是我在Python 3.2中的工作代码:

klass = {}
mod = __import__('sites.' + self.className + '_login', fromlist=[self.className])
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)
该模块位于“站点”文件夹中。它称为my_site_login,该模块中的类称为“my_site”

自从我升级到Python3.3后,代码就停止工作了。我读到importlib.import模块取代了导入。我尝试了几种方法,但都没能成功

这就是我所尝试的:

我不记得我还试过什么。我能说的是,在任何导入尝试之后,我放置的print()都没有显示出来。我没有收到任何错误消息。它什么也不做

很抱歉这个问题,我知道它已经被回答了好几次,但是我尝试了所有的方法,但是没有任何效果。我再也不能思考了。
感谢advanced。

您想重组此功能;在
站点
\uuuu init\uuuuuuu.py
文件中,导入需要动态导入的所有模块

然后只需使用属性访问:

import sites

mod = getattr(sites, self.className + '_login')
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)
如果动态生成您的
my\u site\u login.py
模块,则
importlib.import\u模块()
可调用的功能非常简单:

importlib

mod = importlib.import_module('sites.{}_login'.format(self.className))
klass[self.className] = getattr(mod, self.className)
klass[self.className](**self.args)
在交互式命令提示符下,这可以正常工作:

>>> import importlib
>>> importlib.import_module('sites.my_site_login')
<module 'sites.my_site_login' from './sites/my_site_login.py'>
导入导入库 >>>importlib.import\u模块('sites.my\u site\u login')
在Python 2.7、3.2和3.3中进行了测试。

Ok。。。这很尴尬。因为你的代码正是我想要的,所以有些地方不对劲。问题出在模块的新docstring中。没有utf-8声明,一些字符把一切都搞糟了。无论如何,我将使用您的第二个代码,正如您所猜测的,它们是动态生成的。谢谢
>>> import importlib
>>> importlib.import_module('sites.my_site_login')
<module 'sites.my_site_login' from './sites/my_site_login.py'>