2009-05-25 4 views
7

Я не думаю, что это было задано раньше - у меня есть папка с множеством разных файлов .py. Сценарий, который я сделал, использует только некоторые, но некоторые вызовы других & Я не знаю всех используемых. Есть ли программа, которая получит все необходимое, чтобы этот скрипт работал в одной папке?Соберите все модули Python, используемые в одной папке?

Cheers!

ответ

0

Freeze делает довольно близко к тому, что вы описываете. Он делает дополнительный шаг для создания файлов C для создания автономного исполняемого файла, но вы можете использовать вывод журнала, который он производит, чтобы получить список модулей, используемых вашим скриптом. Оттуда просто скопировать их все в каталог, который должен быть заархивирован (или что-то еще).

6
# zipmod.py - make a zip archive consisting of Python modules and their dependencies as reported by modulefinder 
# To use: cd to the directory containing your Python module tree and type 
# $ python zipmod.py archive.zip mod1.py mod2.py ... 
# Only modules in the current working directory and its subdirectories will be included. 
# Written and tested on Mac OS X, but it should work on other platforms with minimal modifications. 

import modulefinder 
import os 
import sys 
import zipfile 

def main(output, *mnames): 
    mf = modulefinder.ModuleFinder() 
    for mname in mnames: 
     mf.run_script(mname) 
    cwd = os.getcwd() 
    zf = zipfile.ZipFile(output, 'w') 
    for mod in mf.modules.itervalues(): 
     if not mod.__file__: 
      continue 
     modfile = os.path.abspath(mod.__file__) 
     if os.path.commonprefix([cwd, modfile]) == cwd: 
      zf.write(modfile, os.path.relpath(modfile)) 
    zf.close() 

if __name__ == '__main__': 
    main(*sys.argv[1:]) 
+0

+1 хорошая работа, этот маленький скрипт может быть очень удобно –

6

Используйте modulefinder модуль в стандартной библиотеке, смотри, например, http://docs.python.org/library/modulefinder.html

+2

+1 вы можете использовать его в качестве сценария, как, что: питон -m modulefinder myscript.py –

+0

Отличная точка Надя, то -m переключатель часто бывает полезно на самом деле. –

Смежные вопросы