Найти - Пользователи
Полная версия: Как правильно автоматически проверить импорт модуля в Python 2.6?
Начало » Python для экспертов » Как правильно автоматически проверить импорт модуля в Python 2.6?
1
Master_Sergius
Здравствуйте.

Есть Python 2.6.4, есть большой список модулей, которые должны включиться в “бинарник”. Я написал такой скрипт для проверки этих модулей перед “заморозкой”:

  
import traceback                                                                   
                                                                                    
packages = ('Cython', 
            'bbfreeze',             
            'altgraph',
             ...
             # about 50 packages
           )                        
                                                                                    
for package in packages:                                                           
    print 'import %s' % (package,),                                                                                                                                          
    try:                                                                           
        __import__(package)                                                        
        print 'ok'                                                                 
    except:                                                                        
        print 'Can not import module "%s"' % (package,)                            
        traceback.print_exc(

И вот наконец, собрал все нужные библиотеки, скрипт отрабатывает, всё ok. Но потом выясняется, одна библиотека не импортится, хотя скрипт показывает, что ok:

 >>> import altgraph
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named altgraph

Есть подозрения, что эта функция __import__ работает как-то не правильно, к примеру есть жалобы такого плана:
http://www.rupython.com/python-__import__-8887.html

Но это другой случай. Кто знает в чём проблема и как это решить?
Master_Sergius
Короче, не нашел чисто питонячьего решения, сделал вот так (bash script):

  
declare -a PACKAGES=('Cython' 'altgraph' 'bbfreeze' ... )
 
for package in "${PACKAGES[@]}"
do
    python -c "import $package"
done
DamMercul
при самой заморозке надо указать, какие модули замораживать вместе с интерпретатором и скриптом, тогда все будет нормально импротировать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB