Python模块:如何防止导入新模块调用的模块

bet*_*use 5 python python-module python-import python-2.7

我是新手,Python正在创建一个模块以重用一些代码。我的模块(impy.py)看起来像这样(到目前为止,它只有一个功能)...

import numpy as np
def read_image(fname):
    ....
Run Code Online (Sandbox Code Playgroud)

并将其存储在以下目录中:

custom_modules/
              __init.py__
              impy.py
Run Code Online (Sandbox Code Playgroud)

如您所见,它使用了numpy模块。问题是当我从另一个脚本导入它时,就像这样...

import custom_modules.impy as im
Run Code Online (Sandbox Code Playgroud)

然后我输入im.不仅可以调用函数的选项,还可以调用read_image()模块的选项np

如何使它仅可用于我在模块中编写的功能,而不能在模块正在调用的模块(在这种情况下为numpy)中使用?

非常感谢您的帮助。

dan*_*van 1

您可以在函数中导入 numpy

def read_image(fname):
    import numpy as np
    ....
Run Code Online (Sandbox Code Playgroud)

使其对read_image代码本地可用,但不能全局可用。

但警告,这可能会导致性能下降(因为numpy每次运行代码时都会导入,而不是在初始导入时只导入一次) - 特别是如果您运行read_image多次。