Связи с библиотекой стандартных библиотек Python

Я пишу приложение в C # с VisualStudio и использую IronPython для написания сценариев Python для моего приложения. Тем не менее, по умолчанию не поддерживается вся стандартная поддержка библиотеки. Поэтому, чтобы импортировать некоторые модули (например, os), мне нужно указать мой код на C #, где на самом деле находится os-модуль. Я также понимаю, что он все равно будет ограничен библиотеками, реализованными в чистом питоне.

В конечном счете, я хочу иметь что-то, что можно установить на другой машине. Мое текущее обходное решение заключается в том, чтобы включить копию https://github.com/python/cpython/tree/2.7/Lib в папку Debug, в которой работает исполняемый файл, и кажется чрезмерным / ненужным включать всю вещь. Я попробовал просто разместить нужные мне файлы (например os.py), но, очевидно, он импортирует другие модули, которые импортируют другие модули и т. Д. Мне пришлось бы повторно запустить код, чтобы получить ошибку, для какого модуля он не смог найти и добавьте их в 1 к 1, и это стало слишком утомительным.

Мне было интересно, существует ли какой-либо ресурс, который определяет отношения между стандартными библиотечными модулями и может точно указать, какие файлы нужно копировать. По сути, я ищу график графического импорта стандартной библиотеки. Поэтому, если я хочу import osв этих сценариях, я знаю, что нужно копировать os.py, ntpath.py, ...

благодаря

python,python-2.7,visual-studio,ironpython,python-module,

0

Ответов: 1


0 принят

вам, вероятно, не нужен импорт в качестве дерева, а как простой список, поэтому вы можете просто скопировать нужные файлы. Вы можете получить это из 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]
питон, питон-2,7, зрительно-студия, IronPython, Python-модуль,
Похожие вопросы