Python 标准库导入关系



我正在使用VisualStudio用C#编写一个应用程序,并使用IronPython为我的应用程序编写一些Python脚本。但是,默认情况下,它没有整个标准库支持。因此,要导入一些模块(例如os(,我需要将我的 C# 代码指向 os 模块的实际位置。我也明白它仍然仅限于用纯 python 实现的库。

最终,我希望有一些可以安装在另一台机器上的东西。我目前的解决方法是在运行可执行文件的 Debug 文件夹中包含 https://github.com/python/cpython/tree/2.7/Lib 的副本,并且必须包含整个内容似乎过多/不必要的。我尝试只是将我需要的文件(例如os.py(放在这里,但显然它会导入其他模块,这些模块会导入其他模块等......我必须重新运行代码才能找到它找不到哪个模块的错误,并将它们逐一添加,而且它变得太乏味了。

我想知道是否有任何类型的资源可以指定标准库模块之间的关系,并且可以准确地告诉我要复制哪些文件。 本质上,我正在寻找的是标准库导入的图表。因此,如果我想在这些脚本中import os我知道要复制 os.py,ntpath.py,...

谢谢

您可能不需要将导入作为树,而是作为简单的列表,因此您可以复制所需的文件。您可以在导入脚本所需的所有内容后从 sys.modules 获取它 - 它将包含您导入的所有模块所需的所有模块,例如:

import sys # even if you don't use it - it's a built-in module, won't add a file to the list, needed to get sys.modules
import os
import time
#import whatever-else
# this gives a list of tuples (module,file)
m=[(z,x.__file__) for z,x in sys.modules.items() if hasattr(x,"__file__") ]
for x in m:
print x[0],x[1]

最新更新