【问题标题】:Python Standard Library Import RelationshipsPython 标准库导入关系
【发布时间】:2018-12-03 01:06:20
【问题描述】:

我正在使用 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、...

谢谢

【问题讨论】:

    标签: python python-2.7 visual-studio ironpython python-module


    【解决方案1】:

    您可能不需要将导入作为树,而是作为简单列表,因此您可以复制所需的文件。在导入脚本所需的所有内容后,您可以从 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      相关资源
      最近更新 更多