Инструмент Python для включения импортированных элементов - PullRequest
3 голосов
/ 26 сентября 2010

Есть ли в python инструмент для перезаписи некоторого кода, который импортирует такие вещи, что ему больше не нужно ничего импортировать?

Возьмите библиотеку, которая рисует коробку с именем box.py

def box(text='Hello, World!')
    draw the box magic
    return

Теперь в другой программе (назовем ее warning.py) она говорит:

from box import box

box('Warning, water found in hard drive')

Есть ли инструмент, который я могу использовать, который увидит, как он импортирует функцию box (или класс в этом отношении) из box и вставляет эту функцию (или класс, или даже определения переменных) в скрипт warning.py, удаляя линия импорта (что делает ее более переносимой)?

С благодарностью, Narnie

Ответы [ 2 ]

7 голосов
/ 26 сентября 2010

Похоже, вы хотите эффективно скопировать и вставить все в один файл, чтобы иметь возможность распространять один файл вместо нескольких?

В этом случае обратите внимание на использование заархивированного модуля вместо того, чтобы копировать все в один файл ... Это гораздо удобнее в дальнейшем.

Python выполнит zip-файл, если внутри него есть __main__.py -файл.

например:.

echo "def foo(): print 'code inside a.py'" > a.py
echo "def bar(): print 'code inside b.py'" > b.py
echo "import a; import b; a.foo(); b.bar()" > __main__.py
zip test.zip a.py b.py __main__.py
rm a.py b.py __main__.py

python test.zip

Создает zip-файл с 3-мя python-файлами внутри. Это может быть выполнено с python test.zip. Все полностью автономно. (Я считаю, что для этого требуется python> = 2.6, кстати ...)

0 голосов
/ 26 сентября 2010

Если вы пытаетесь облегчить распространение ваших сценариев, это неправильный способ сделать это. Для окон, посмотрите на py2exe , который преобразует все ваши файлы в один исполняемый файл. Для linux предпочтительным методом является использование пакета, который установит менеджер пакетов пользователя. Если у вас правильно установлены биты distutils, то создать пакет для вашего программного обеспечения не составит труда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...