Python 标准库导入关系
Python Standard Library Import Relationships
我正在使用 VisualStudio 在 C# 中编写应用程序,并使用 IronPython 为我的应用程序编写一些 Python 脚本。但是,默认情况下它没有完整的标准库支持。因此,要导入一些模块(例如 os
),我需要将我的 C# 代码指向 os 模块实际所在的位置。我也明白它仍将仅限于以纯 python.
实现的库
最终我想要一个可以安装在另一台机器上的东西。我当前的解决方法是在 Debug 文件夹中包含 https://github.com/python/cpython/tree/2.7/Lib 的副本,其中可执行文件为 运行ning 并且似乎 excessive/unnecessary 必须包含整个内容。我尝试只将我需要的文件(例如 os.py
)放在这里,但显然它导入了其他模块,这些模块又导入了其他模块,等等......我将不得不重新 运行 代码来获取找不到哪个模块的错误,然后将它们 1 个添加到 1 个中,这变得太乏味了。
我想知道是否有任何类型的资源可以指定标准库模块之间的关系,并且可以准确地告诉我要复制哪些文件。本质上,我正在寻找的是标准库导入图。因此,如果我想在这些脚本中 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]
我正在使用 VisualStudio 在 C# 中编写应用程序,并使用 IronPython 为我的应用程序编写一些 Python 脚本。但是,默认情况下它没有完整的标准库支持。因此,要导入一些模块(例如 os
),我需要将我的 C# 代码指向 os 模块实际所在的位置。我也明白它仍将仅限于以纯 python.
最终我想要一个可以安装在另一台机器上的东西。我当前的解决方法是在 Debug 文件夹中包含 https://github.com/python/cpython/tree/2.7/Lib 的副本,其中可执行文件为 运行ning 并且似乎 excessive/unnecessary 必须包含整个内容。我尝试只将我需要的文件(例如 os.py
)放在这里,但显然它导入了其他模块,这些模块又导入了其他模块,等等......我将不得不重新 运行 代码来获取找不到哪个模块的错误,然后将它们 1 个添加到 1 个中,这变得太乏味了。
我想知道是否有任何类型的资源可以指定标准库模块之间的关系,并且可以准确地告诉我要复制哪些文件。本质上,我正在寻找的是标准库导入图。因此,如果我想在这些脚本中 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]