我在同一文件夹中有两个文件,SysDump.py
和 libApi.py
。
在 SysDump
中我这样做:
from libApi._SysDump import *
在libApi
中我有:
def _SysDump():
import cPickle as _cPickle
import math as _math
from zipfile import ZipFile as _ZipFile
import re as _re
但是我收到错误:
from libApi._SysDump import *
ImportError: No module named _SysDump
我使用 VS2012+PTVS
单步执行代码,当我单步执行时,执行跟踪会转到 libApi
中的 def _SysDump()
但不输入它。问题是我如何才能使其仅在 Python 2.6 中工作?
最佳答案
from libApi._SysDump import *
在编写此内容时,Python 会查找包 libApi
以及其中名为 _SysDump
的模块。包相当于文件夹,模块相当于单个文件。从你的描述来看,你的情况并非如此。您有一个带有函数 _SysDump
的模块 libApi
。所以如果有的话,你可以这样做:
from libApi import _SysDump
因此您将获得对 _SysDump
函数的引用。请注意,运行该函数不会为您提供对尝试导入的所有模块的引用。在函数内部,模块将被导入并分配给局部变量。函数结束后,这些引用就消失了。
如果您想让某个模块处理所有导入,您可以创建一个执行这些导入的文件并导入该模块中的所有内容:
# imports.py
import cPickle as _cPickle
import math as _math
from zipfile import ZipFile as _ZipFile
import re as _re
然后:
from imports import *
关于python - 在函数中导入导入 - Python 2.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14174368/