Python F.A.Q. [ Решения проблем ]

Тема в разделе "Perl, Python, Ruby", создана пользователем chibit, 26 сен 2012.

  1. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    Делимся решениями проблем, которые отняли у вас значительное (не 5 минут поиска в гугле) количество времени (проблемы с зависимостями, версиями библиотек и т.п.).
    Не забываем, что для Windows уже есть скомпилированные версии библиотек (Перейти по ссылке).
    Код:
    #Устанавливаем зависимости:
    #Для Debian
    apt-get install make gcc libssl-dev libsqlite3-dev libz-dev libbz2-dev
    
    #Для CentOS
    yum install make gcc openssl-devel sqlite-devel zlib-devel bzip2-devel
    
    
    #Скачиваем архив с интерпретатором питона
    wget -c http://www.python.org/ftp/python/3.2.3/Python-3.2.3.tgz 
    #Распаковываем архив
    tar -xvf Python-3.2.3.tgz
    #Переходим в папку с распакованным архивом
    cd Python-3.2.3
    #Устанавливаем в /opt/python3.2 (чтобы без проблем удалить, переустановить, установить несколько версий питона)
    ./configure --prefix="/opt/python3.2"
    #Устанавливаем Python
    make && make install
    #Создаем символическую ссылку для простого запуска Python (без указания полного пути к бинарнику, достаточно просто запустить python3.2) 
    ln -s /opt/python3.2/bin/python3.2 /usr/bin/python3.2
    
    #Скачиваем и устанавливаем пакетный менеджер PIP
    wget -c http://python-distribute.org/distribute_setup.py
    python3.2 distribute_setup.py
    /opt/python3.2/bin/easy_install pip
    #Создаем символическую ссылку для простого запуска PIP
    ln -s /opt/python3.2/bin/pip /usr/bin/pip
    

    Код:
    #Устанавливаем зависимости:
    #Для Debian
    apt-get install libjpeg8-dev
    
    #Для CentOS
    #Примечание: т.к. в CentOS есть только 6 версия библиотеки, а нужна 8, то придется устанавливать из исходников
    wget -c http://www.ijg.org/files/jpegsrc.v8d.tar.gz
    tar -xzf jpegsrc.v8d.tar.gz
    cd jpegsrc.v8d
    ./configure
    make && make install
    #Создаем символическую ссылку на библиотеку, иначе при импорте C модуля PIL будет ошибка: ImportError: libjpeg.so.8: cannot open shared object file: No such file or directory
    ln -s /usr/local/lib/libjpeg.so.8.4.0 /usr/lib/libjpeg.so.8
    #
    # Необязательно!
    # Для поддержки ZIP/PNG устанавливаем zlib из исходников, иначе будет ошибка: decoder zip not available
    #
    wget -c http://zlib.net/zlib-1.2.7.tar.gz
    tar -xvzf zlib-1.2.7.tar.gz
    cd zlib-1.2.7
    #Устанавливаем в /usr/local/zlib, чтобы не было конфликтов с другими версиями zlib
    ./configure --prefix=/usr/local/zlib --shared
    make && make install
    #Теперь нужно разархивировать PIL (ссылка ниже) и заменить в setup.py ZLIB_ROOT = None на ZLIB_ROOT = libinclude("/usr/local/zlib"), заархивировать обратно в zip и загрузить в root. Установка описывается ниже (шаг скачивания нужно пропустить)
    
    
    #Скачиваем _вручную_ с http://www.lfd.uci.edu/~gohlke/pythonlibs/ архив PIL-fork-1.1.7-py3-source.zip  [987 KB]  [Source Code]  [Jul 04, 2012] и кладем в root
    cd root
    #Устанавливаем PIL
    pip install ./PIL-fork-1.1.7-py3-source.zip
    
    #Использование PIL для Python 3.x: from PIL import Image

    Код:
    #Устанавливаем зависимости:
    #Debian
    apt-get install libmysqlclient-dev
    
    #CentOS
    yum install mysql-devel
    
    
    #Устанавливаем oursql
    pip install https://launchpad.net/oursql/py3k/py3k-0.9.3/+download/oursql-0.9.3.zip

    Это баг слишком старого ядра (~2.6.18). Для решения этой проблемы установите Python 3.3.x или дождитесь выхода Python 3.2.4

    Добавляем в крон команду:
    Код:
    cd /home/parser/ && python3.2 /home/parser/start.py
    Можно указать полный путь к питону, например /usr/bin/python3.2, или же прописать полный путь в начало start.py #!/usr/bin/python3.2 и запускать в кроне только по имени файла.

    FAQ будет периодически дополняться/обновляться. Если есть какие-то замечания по FAQ-у, просьба написать автору решения в личку.

    В решении проблемы пишите установку зависимостей сразу для нескольких дистрибутивов (минимум debian, centos).
    Просьба не писать в теме ничего лишнего, кроме как решение проблемы, которая не решается 5-минутным поиском в гугле.
     
    Ultharas, Sorcus и latteo нравится это.
  2. SolutionFix

    SolutionFix 17 лет програмлю ;)

    Регистр.:
    20 ноя 2006
    Сообщения:
    272
    Симпатии:
    318
    Python 2.7
    файл mimetypes.py

    Код:
    def read_windows_registry(self, strict=True):
    
    меняем except UnicodeEncodeError: на
    except UnicodeError:

    Реальный баг, до сих пор не поправлен Перейти по ссылке
     
    Sorcus и latteo нравится это.
  3. chibit

    chibit Life sucks.

    Регистр.:
    4 дек 2007
    Сообщения:
    419
    Симпатии:
    285
    Часть советов уже не актуальна. Для Python 3.2/3.3 вышел Pillow (форк PIL, поддерживающий нормальную установку) и Python 3.2.5 (в котором должен быть включен фикс /opt/python3.2/lib/python3.2/subprocess.py:389).
     
    Sorcus нравится это.