相关疑难解决方法(0)

动态加载python模块

在python中,如何在编程运行时动态地将模块添加到包中.

我希望能够从外部进程将模块添加到包目录中,并且能够在我的程序中使用这些新模块:

import package

def doSomething(name):
    pkg = __import__("package." + name)
    mod = getattr(pkg, name)
    mod.doSomething()
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

python dynamic python-import

51
推荐指数
5
解决办法
6万
查看次数

在“编译”期间捕获Python中的导入错误和名称错误

您可以使用(linting)工具或编译步骤来捕获python中的导入/名称和其他错误吗?

另一个选择是确保测试所有可能的代码路径(这并不总是可行的,尤其是对于现有的大型代码库和其他原因而言)

这里有些例子。

  1. 缺少导入 -由pylint捕获,尽管用syntax error代替import error
def test():
    print("Time now is ..", datetime.datetime())
Run Code Online (Sandbox Code Playgroud)

pylint输出:

E0602: Undefined variable 'datetime' (undefined-variable)
Run Code Online (Sandbox Code Playgroud)
  1. 导入present,但使用的方法不正确。这将同时传递pylint和py_compile。
from datetime import datetime
def test():
    print("Time now is ..", datetime.today2())
Run Code Online (Sandbox Code Playgroud)

编辑:要添加另一个选项。

这样做会import *显示一些错误,但不会显示函数内部的语句中的错误。

报告此错误

from datetime import datetime
print("today2", datetime.today2())
Run Code Online (Sandbox Code Playgroud)

错误:

Python 3.7.0 (default, Aug 22 2018, 15:22:56)
>>> from test import *
...
    print("today2", datetime.today2())
AttributeError: type object 'datetime.datetime' has no attribute 'today2'
>>>
Run Code Online (Sandbox Code Playgroud)

这不是。

from datetime import …
Run Code Online (Sandbox Code Playgroud)

compilation python-3.x

5
推荐指数
1
解决办法
170
查看次数

标签 统计

compilation ×1

dynamic ×1

python ×1

python-3.x ×1

python-import ×1