понедельник, 24 декабря 2012 г.

Как переименовать или удалить файлы с данными и файлы журналов

Как переименовать или удалить файлы с данными и файлы журналов
Для памяти я сделал перевод из этого материала: How to Rename or Move Datafiles and Logfiles [ID 115424.1]
ПРИМЕЧАНИЕ:  Чтобы переименовать или удалить файлы в табличном пространстве SYSTEM вы должны базу остановить, потому что вы не можете перевести табличное пространство SYSTEM в оффлайн.

I. ПЕРЕИМЕНОВАНИЕ ИЛИ УДАЛЕНИЕ ФАЙЛОВ ДАННЫХ ПРИ ОТКРЫТОЙ БАЗЕ ДАННЫХ

1. Определить как много файлов с данными связаны с табличном пространством.
     > SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES
               WHERE TABLESPACE_NAME = 'Имя';
2. Убедитесь в том, что все файлы с данными возвращают статус AVAILABLE.
3. Сделайте табличное пространство только для чтения.
     > ALTER TABLESPACE  имя READ ONLY;
4. Убедитесь в том, что табличное пространство определено со статусом только для чтения в словаре данных.
     > SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES
               WHERE TABLESPACE_NAME = 'имя';

     TABLESPACE_NAME                STATUS
    -
             ИМЯ                                   READ ONLY

5. Скопируйте файл(ы) на новое место, используя команду операционной системы copy.  После копирования сравните файлы по размеру. Убедитесь, что файлы одинакового размера.
6. После копирования файлов измените статус табличного постранства на оффлайн.
    > ALTER TABLESPACE имя OFFLINE;
 * С этого момента табличное пространство не доступно пользователям.
7. Так как табличное пространство в оффлайне, вы можете переименовать файлы. Это внесет изменения в controlfile.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
 * Вы должны будете сделать это для всех файлов данных, связанных с этим табличным пространством. Вы можете использовать такую же конструкцию ALTER TABLESPACE ... RENAME DATAFILE.
8. Если предложение alter database обработано для файлов, вы можете перевести табличное пространство в онлайн.
     > ALTER TABLESPACE имя ONLINE;
9. После этого переведите табличное пространство в статус чтение/запись.
     > ALTER TABLESPACE имя READ WRITE;
10. Проверьте статус табличного пространства. Вы можете так же проверить как обновился controlfile:
      > ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
  Эта команда выведет содержание controlfile в текстовый файл в директорию с именем  user_dump_dest.
  Конечно, можно посмотреть V$DATAFILE.
11. Удалите старые файлы командами O/S.

II. Переименование и/или удаление файлов с данными при остановленной базе

1. Если база работает, остановите ее.
2. Скопируйте файлы с данными на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу.
      > STARTUP MOUNT                                                         
 Эта команда прочтет файл control, но не монтирует файлы с данными.   
4. Переименуйте файл внутри Oracle.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_DATAFILE_NAME.DBF'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_DATAFILE_NAME.DBF';
 Выполните эту команду для всех тех файлов, которые вы меняли на уровне операционной системы.
5. Откройте базу данных.
      > ALTER DATABASE OPEN;
6. Запросите v$dbfile что бы удостовериться в правильности изменений.
      > SELECT * FROM V$DBFILE;
7. Удалите старые файлы на уровне операционной системы.

III. Переименование и/или удаление журнальных файлов(LOGFILE)

1. Остановите базу данных.
2. Скопируйте logfile на новое место или с новым именем на уровне операционной системы.
3. Смонтируйте базу данных.
      > STARTUP MOUNT
4. Переименовываем файл.
     > ALTER DATABASE RENAME FILE
               '/FULL_PATH_OF_OLD_LOCATION/AND_REDO_LOG_NAME.LOG'
               TO
               '/FULL_PATH_OF_NEW_LOCATION/AND_REDO_LOG_NAME.LOG';
5. Открываем базу данных.
      > ALTER DATABASE OPEN;
6. Удаляем старые журнальные файлы на системном уровне.

четверг, 22 ноября 2012 г.

Jython и кириллица

На свете много есть языков ... программирования.

Мне нравятся Python и его клоны. Главное это отступы! Это меня поражает. Только так нужно учиться излагать свои мысли. Программа это записанный разговор с компьютером. Надоело говорить одно и то же, напиши функцию. Не хочешь повторять то, что сделали другие, возьми библиотеку. Но главное - не бормотать.

Вот анекдот. Язык Jython, версия 2.7а2. Читаем информацию из Oracle, естественно по JDBC. Информация поступает в Юникоде. При попытке напечатать строку выдается ошибка. При попытке перекодировать ничего не помогает! А помогло вот что: строку с юникодом обрабатываем функцией str() и ВСЕ!

 

вторник, 30 октября 2012 г.

Где ты tnsnames.ora?

У администратора на машине как правило устанавливается несколько клиентов Oracle. В каждом из них надо прописать tnsnames.ora. Если происходят какие-то изменения, например поменяли порт базы), то надо менять tnsnames.ora во всех клиентах Но если вы запишете в переменной среды переменную TNS_ADMIN и дадите ей путь (например, С:\oracle), и там разместите ваш tnsnames.ora, то все продукты будут брать только его.

суббота, 13 октября 2012 г.

Копируем файл с одной машины на другую-2

Имеем два сервера: 2003 и 2008 R2.
На 2003 работает MS SQL 2005. Ежедневно выполняется BACK UP MS SQL. Файл бэкапа вырос до 100 гигабайт.
Два раза в неделю файл с бэкапом копировался на другой сервер по сети. Этот сервер работает под Windows 2008 R2. Так вот файл размером в 100 гиг не копируется: в сообщении говорится, что не хватает памяти на сервере. Что интересно, с сервера под управлением Windows 2008 R2 копирование проходит, а с Windows 2003 нет.
Просто кошмар! А в Интернете стон по поводу копирования больших файлов на Windows. Интересно, а зачем сервера, если у вас маленькие файлы?    

История битвы:
1.
Поставил в реестре сервера, на который копирую вот это значение:

Поставил на Windows 2008 R2 сервис пак SP1 - не помогло.

HKEY_LOCAL_MACHINE
 \SYSTEM
  \CurrentControlSet
   \Services
    \LanmanServer
     \Parameters
IRPStackSize DWORD 0x000000014 (20)

УВЫ.
2. На уме выполнять копию MSSQL на два файла. Тогда будет два файла по 50 гиг, ну а 50 гиг Windows копирует. 

Стихи

Мне нравится Блок - Когда ты загнан и забит

среда, 10 октября 2012 г.

Ораклоид будь бдительным!

При установке клиента 11G ставиться новая ссылка на dll библиотеки 11 версии. А 11 версия не работает с 8i.
Будьте бдительны: Oracle говорит о совместимости версий через одну. Например, 11 версия совместима с 10 и 9, 10 совместима с 9 и 8.
На компьютере могут быть несколько клиентов. Каждый ставиться в свой Oracle Home. Программное обеспечение должно уметь настраиваться на них. Плохо с OLEDB, под него в реестре есть синоним, и в нем ссылка на нужную dll. Замените путь и программа будет работать с OLEDB другого клиента. Копаться в реестре не сахар, но на не боевом компьютере можно.  
Ораклоид бди!
Жила-была база, на Oracle 8.1.7. Потом пришло светлое будущее и все переехало на 10.2. На старой базе остались "старые договора", они "долгоиграющие". Все хорошо, старая база есть не просит, но аудит в ней НЕ отключили. Настал день, табличное пространство закончилось(кстати в восьмерке только 2Гб на файл) и база сказала стоп, прежде увеличьте табличное пространство под аудит. И даже через sqlplus не пускает.

Пришлось из операционки валить базу утилитой. В init.ora ставить параметр аудита в false. Тогда база пустила администратора и он уж порубил аудит в ноль.
Ораклоид бди!
В Oracle есть два системных пользователя SYS и SYSTEM. Об этом знает каждый! Преклонение перед ими затмевает тот факт, что SYS главнее чем SYSTEM. И вот создали роль под SYS, а при создании пользователя под SYSTEM, грантовать ему эту роль не получилось - прав не хватило.
!
 

воскресенье, 7 октября 2012 г.

Как продать автомобиль?

Как сейчас продать автомобиль?
Просто.
Снимаете авто с учета для продажи. Вам выдают временный номер.
Составляете договор, примерно вот такой (Бланк) в двух экземплярах.
Подписываете его с покупателем и все. Не лишне в тех паспорте расписаться на месте старого владельца.
Передаете авто и документы покупателю и все.

пятница, 21 сентября 2012 г.

Три правила композиции

На просторах Интернета встретил статью на английском про три правила композиции - Правило Третей, Золотое сечение и Правило диагоналей. Решил прочитать. Что бы понять лучше стал переводить. И вот он вольный перевод: Три правила композиции

Интересные соотношения:

Обычный экран-монитор - 4:3 = 1.333
Фотокадр фотопленки      36:24 = 1.5
Новые экраны-мониторы - 16:9 = 1.7

Золотое сечение                - 3/8:5/8, 1.6

Моя попытка применить на практике эти принципы:
dvor21

А вот еще - я обрезал снимок после чтения статьи:
MoscowMetro_20121024
 

среда, 19 сентября 2012 г.

Копируем файл с одной машины на другую

Скрипт powershell, выполняющий копирование файлов с сетевого диска на текущий локальный для архивации:

задаем локации

$Dest1 = "\\sqlProm\24retail" - Это расшаренный по сети диск
$Dest2 = "d:\backup2005" - Это локальный диск


Выполняем  цикл по всем файлам на сетевом диске с расширением .trn
ForEach ($File in (Get-ChildItem $Dest1 -Filter "*.trn" ))
    {
     #Задаем переменную с путем из второй папки.
     $Dest1ToDest2= $File.FullName.Replace($Dest1, $Dest2)

     #Проверяем существует ли файл во второй папке, который существует в папке 1
     if ((Test-Path -path $Dest1ToDest2) -ne $True)
        {
            #Если файл не существует, то скопируем его из папки1 в папку2
            Copy-Item $File.FullName $Dest1ToDest2 -Force
        }
        Else
            {
                #Файл существует. Значит будем проверять даты.
                if ((Dir $File.FullName).LastWriteTime -gt (Dir $Dest1ToDest2).LastWriteTime)
                    {
                        #Файл существует, и в папке 1 изменения сделаны позже, чем в  Папке 2
                        Copy-Item $File.FullName $Dest1ToDest2 -Force
                    }
            }
    }

понедельник, 10 сентября 2012 г.

Воспоминание по поводу

Смотрел телеканал "Звезда". Показали документальный фильм о ППШ. Вспомнил рассказ отца-ветерана. Он воевал с лета 1943 по 1945 год на юге (3-й Украинский фронт) в роте автоматчиков. В их роте было 72 человека. У всех ППШ. Магазины круглые на 71 патрон. К автомату у каждого было два круглых магазина и мешок патронов. Каждый садился, снимал крышку магазина с боку,  взводил выталкивающую пружину до упор и аккуратно вертикально ставил патроны в магазин друг к другу по улитке. Потом осторожно спускал пружину, что бы она поджала патроны. Закрывал крышку: один магазин на пояс, другой в автомат. Готово.
Я спросил: и на сколько этого хватит? Он сказал, что на одну атаку хватит, если с умом расходовать. - Так ведь, когда бежишь из автомата вообще не попадешь. Он ответил: когда рота бежит и стреляет - зрелище не для слабонервных, а попал не попал, это дела второе, не в тире.

Помню, он рассказал байку на эту тему: было это на Дунае. У немцев была высота, у наших плавни. В ближайшей деревне стоял наш батальон, в состав которого входила рота автоматчиков. Командир батальона ценил свою роту автоматчиков, и без нужды не подставлял. И вот проезжая по деревне начальство увидев автоматчиков, дает приказ - немедленно собрать всех и взять высоту. Приказ есть приказ, вся рота собирается в плавнях и, развернувшись в цепь, бежит на высоту, открыв огонь. Немцы, схватив оружие, бегом отступают с высоты на другую сторону. Ура победа. Высота наша. Неожиданность и напор.

А далее идет технология. Заняв окопы, солдаты начинают проверять, что им оставил враг. А враг им оставил не мало. Конечно, никто не вставляет патроны в магазины. Они пусты.

Враг же, добежав до лесочка, разворачивается и развернувшись в цепь контратакует высоту, стреляя из автоматов. Наши автоматчики, понимая, что стрелять не из чего, бегут к плавням, прихватив кое-что из немецких вещей.
Потерь особых не было с обеих сторон. Но судя по оскорбительным крикам с немецкой стороны, боевой дух немцев сильно пострадал.

Ну а эту высоту, взяли? Конечно, но не в этот день. Подошло подкрепление. Отработала артиллерия по высоте и бегать там уже было особо некому.

Сейчас, я вспоминаю рассказы отца и кроме таких баек ничего особо не помню. Может сложиться мнение, что отец воевал в элитной части. Но нет, их рота сформирована была под Херсоном. 72 человек. К Дунаю осталось из них 12 человек, мой отец среди них. Два раза был ранен, но легко и остался в роте. Закончил воевать в Вене. Потом служил до 48 года. Молодежь служила 5 лет, а стариков, особенно с профессиями начали демобилизовать еще в конце 44.    

Наш отец (нас два сына у него было) был ПРОСТЫМ СОЛДАТОМ. Это они победили в войне. После войны, он пошел на завод, был фрезеровщиком. Рабочим был.
Вот он:
 

воскресенье, 2 сентября 2012 г.

Дайте мне 2 минуты и я сделаю вас лучшим фотографом

Это мой перевод (конечно и Google) для памяти этого поста:
Дайте мне 2 минуты и я сделаю вас лучшим фотографом

1. Правильно заполните кадр: При съемке обычно вы хотите показать что-то, поэтому главный объект должен выделяться от остального изображения. Именно поэтому вы можете добавить выразительности своей фотографии, просто позволив объекту занимать более важное место в кадре.
Заполнение кадра может быть достигнуто либо путем увеличения масштаба или вашего приближения к объекту съемки, или, конечно, и то и другое.
2. Проверьте фон: Прежде, чем сделать снимок проверьте фон в видоискателе на отсутствие любого захламление или отвлекающих элементов. Двигайтесь, пока не найдете место с не-отвлекающим фоном.
3. Проверьте модель: Если вы снимаете портрет, проверьте модель на отсутствие любых отвлекающих элементов, большие часы, может быть, неопрятный вид или грязную одежду, волосы, падающие на лицо и т.д. ...
4. Глаза должны быть резкие: Это относится только к портрету, но все же, вы хотите, чтобы эти глаза должны быть четкими, так как в портрете акцент всегда на глаза
5. Проверьте на небольшие обрезания объекта в кадре: Если вы не хотите включать всю вашу модель в кадр, обязательно продумайте где и что отрезать у него / ее. Не отрезайте только пальцы, немного части головы, немного от локтя и т.д. ... эти небольшие отрезания обычно обозначают ошибки.
6. Научитесь использовать вертикальное расположение кадра: Большинство новичков имеют тенденцию всегда выбирать горизонтальные композиции. Когда вы сможете использовать как вертикальное, так и горизонтальные композиции,позже вы будете иметь роскошь выбирать тот, который вы предпочитаете.
7. Измените точку съемки: Не используйте туристический подход в фотографии снимать все, только стоя, попытайтесь использовать низкую точку зрения (лежа на земле) или высокую (встать на стул или на что-то). Ваше изображение будет иметь большее влияние, просто потому, что зритель видит что-то с не обычной точки зрения.
8. Изучите правило третей: Для вас это должно быть азбукой фотографии. Если вы никогда не слышали об этом правиле теперь самое время заняться им. Изучить можно здесь правило третей(Англ.) 
9. Снимайте много: Вначале снимайте много, потом когда придет время вы захотите снимать меньше. Изучите свои фотографии позже, тогда вы поймете что предпочитаете и почему.
10. Присоединитесь к какому-нибудь фото сообществу: Удивительно, как много можно узнать, прочитав то, что другие люди говорят о вашей фотографии. Это поможет вам научиться смотреть на ваши фотографии другими глазами

11. Учитесь у других: Большинство фотографов начинает с "копирование" кого-то еще, того кто вдохновляет их. Когда вы увидите фото, которое заставляет вас восхищает, потратьте некоторое время и изучите его, почему он оказывает такой эффект на вас? Это композиции?цвета? свет и т.д. ...

12. Само совершенствуйтесь: Учитесь на своих ошибках, снимайте и еще раз снимайте, и попробуйте запомнить, что у вас получалось, а что нет в подобных ситуациях.

13. Показывайте только свои лучшие работы.
14. Удачи: Я думаю, что это самое важное

Резкость 1

Я фотографирую всю жизнь и всю жизнь борюсь с шевеленкой. Думаю, что борюсь. На деле нет.  Всегда немного тороплюсь. Причины разные. Как следствие это небольшое движение аппарата во время съемки. Если это убрать, то резкость, а в конечном итоге и качество снимка резко возрастут.
Так вот, англичане называют процесс выполнения снимка - SHOOT - выстрел
1. Итак, как учили стрелять: остановился; успокоился; плотно прижал аппарат к себе; задержал дыхание и плавно нажимаешь кнопку до упора и готов резкий снимок, правда объекта в кадре может не оказаться.
2. Все профи говорят берите штатив. Это хорошо, когда объект не двигается, можно и со штативом повозится. Но если объект не двигается зачем штатив?
3. Фото охота! Всегда понимал как фотографирование животных, а может вообще фотография это фото охота.  

вторник, 28 августа 2012 г.

ФЭД и другие

Сколько себя помню, кругом фотографии. Они оживляют память у тех кто смотрит и причастен.
В 14 лет у меня был аппарат Смена 8.
Перед Олимпиадой я купил ФЭД.
Этот аппарат жив до сих пор и работает. Пленку я проявлял сам. Проявитель для пленки делал то же сам. Покупал химикаты и по рецепту готовил Д-76. Затем раствор проявителя доводил до температуры 20 градусов. Банку с проявителем ставил в раковине под проточную холодную волу и следил за градусником. Оказалось, что летом из крана бежит вода комнатной температуры и получить 20 градусов не так просто.

После проявления промывка в проточной воде. Многие пленки живы до сих пор в нормальном качестве. Интересно что будет с сегодняшними цифровыми носителями через 30 лет?
Я оцифровал некоторые пленки. Вот результат:
Встреча ветеранов
 Ветераны собирали в сквере напротив Большого театра. Какие они еще молодые.











Потом Великий Союз распался и началась новая жизнь. Будучи в командировке я увидел фотоаппарат фирмы Minolta. Как только появилась возможность я купил Minolta 3xi родом из Японии.
Он пленочный и умеет все что нужно любителю и даже больше. В нем встроена программа выбора фокусного расстояния в зависимости от сюжета снимка. Было опасение, что на морозе, он просто замерзнет.





Тогда у знакомого я купил пленочную зеркалку, аналог "Зенита", но сделанного в Японии, мало того его сделали для Италии. Корпус у него был обделан под кожу. Прошло время и этот корпус облупился ужасно, но аппарат работает как часы:
  Надо сказать, что этот аппарат какое-то время продавался в РОССИИ. Шло время и Минольта выпускала новые модели. Я конечно, не мог стоять в стороне от прогресса и взял пленочную камеру:







 Minolta 600se classic. Она хорошо мне послужила. Из каждого отпуска я привозил несколько роликов пленки. К этому времени пленки стали исключительно цветными, проявлять и печатать самому и в голову не приходило.
Я не профи, я любитель. Делаю снимки для души и хвастаюсь родным и знакомым. А они скрипя сердцем хвалят. А какой любитель не хочем обладать настоящей широкопленочной камерой. И вот прошло время и Китай сделал свою Чайку (SEAGULL)/
Я ее купил и опробовал. Вот этот аппарат:
  

Время неумолимо. Пришла цифра. Пленку в камерах заменил цифровой сенсор. У первых цифровых камер сенсор сильно грелся и изображение было ужасным. Кстати пришлись зеркалки: вы наводили через видоискатель, а потом раз и быстро сделали снимок. Качество у церкалок было гораздо выше.

Я конечно купил 7D:



   

Аппарат очень хороший. Но тут закатилась звезда марки Minolta и начинается история фотоаппаратов фирмы Sony.
А я, не приняв Sony, как фото спутницу стал метаться среди разных фирм.

Соблазнившись небольшими размерами и приличным качеством приобрел Olympus:



И наконец предчувствуя закат зеркалок, приобрел Pentax K-5 для особых случаев, ну и для души.






Он может все и даже больше. Правда, хороший снимок делает фотограф. Но мы ведь любим свои игрушки.

P.S. Вопрос об аппаратах самых именитых фирм не стоял - не хотелось.


суббота, 25 августа 2012 г.

PCTUSED & PCTFREE

Немного о том как Oracle хранит данные.

Все данные базы данных Oracle хранятся в логическом пространстве. Логическое пространство состоит из блоков данных. Блоки объединяются в экстенты, а те в сегменты.

Один блок данных соответствует определенному числу байт физического пространства базы данных на диске.

Экстент представляет собой смежные блоки данных, выделенные для хранения определенного типа информации.

Экстенты объединяются в сегменты. Сегмент представляет собой набор экстентов, каждый из которых был выделен для конкретной структуры данных и все они хранятся в одном и том же табличном пространстве.


Oracle выделяет память для сегментов одним экстентом. По мере заполнения экстентов данного сегмента, Oracle выделяет ему следующий экстент. Потому, экстенты сегмента могут или не могут быть смежными на диске.

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

Теперь о главном


Когда мы создаем объекты базы данных, то указываем параметры хранения. Среди прочего мы должны указать значения процента свободной памяти блока PCTFREE и процент занятой памяти блока PCTUSED при достижении, которой в блок можно вставлять новые записи.
   
PCTUSED может рассматриваться как метка нижнего уровня, а PCTFREE как метка верхнего уровня. Если в блоке данных свободного места меньше, чем указано в PCTFREE, то новая запись в этот блок добавляться не будет, пока в нем заполненного места не станет меньше чем PCTUSED. В сумме PCTUSED и PCTFREE не может быть больше 100. (По умолчанию PCTUSED равно 10 а PCTFREE равно 40)

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

Если часто делаются вставки новых записей, а не изменения старых, то PCTFREE можно поставить не большим, а PCTUSED средним, чтобы уменьшить цепочки записей.

Если цель вашего приложения в высоком быстродействии и памяти много, то ставьте  PCTFREE очень большим, а PCTUSED очень маленьким.



суббота, 14 июля 2012 г.

Про Python

Оригинальное сообщение:

Python 101: easy_install or how to create eggs

Posted by Mike under Packaging, Python ПЕРЕВОД ДЛЯ СЕБЯ(с помощью GOOGLE переводчик)

Сегодня мы собираемся взглянуть на спорный способ установки Python модулей и пакетов с использованием easy_install. Мы также узнаем, как создать свои собственные файлы вида *.egg. Чтобы у Вас все работало, Вы должны установить Setuptools(http://pypi.python.org/pypi/setuptools/). Этот пакет не поддерживает Python 3.x, так что если вам это нужно, смотрите (http://pypi.python.org/pypi/pip/ или http://www.blog.pythonlibrary.org/2012/07/12/python-101-easy_install-or-how-to-create-eggs/pypi.python.org/pypi/distribute). Там будет несколько статей о каждом из этих проектов в будущем. На данный момент, мы начнем с Setuptools и easy_install.

Почему спорный? Я не совсем уверен, но люди не довольны тем, как это было частично установки пакетов, поскольку он не ждать до окончания загрузки. Кроме того, я слышал, что автор был не очень заинтересован в обновлении, но не позволит никому, чтобы обновить его тоже. См. статью Зиад в конце этого поста.
 
Пакет Setuptools обеспечивает оригинальный метод потоковой загрузки и установки пакетов Python с PyPI и других источников с помощью командной строки. При установке Setuptools, устанавливается сценарий или программа с расширением EXE с названием easy_install. Ее вы можете вызвать из командной строки для установки и обновления пакетов. Она также предоставляет возможность создания файлы с расширением .egg. Давайте познакомимся с этой утилитой.

Использование утилиты easy_install для установки пакетов

 После того как вы установили пакет Setuptools​​, у вас на машине в переменной PATH указана папка с программой easy_install. Это означает, что вы в состоянии открыть терминал (Linux) или командную строку (Windows) и просто запустить easy_install. Вот пример вызова:

 easy_install sqlalchemy

Эта команда выведет на сайт с PyPI (очевидно, что доступ к Интернет у Вас есть) и попытаеться загрузить последнюю версию SQLAlchemy оттуда или из любого места, на которое указывает PyPI. Сценарий Easy_install установит его. Есть одна проблема. Программа easy_install может попытается начать установку до завершения загрузки пакета и это может привести к плохой установки. Есть замечательное свойство в easy_install, если вы создали свой файл setup.py правильно, то можно также загрузить и установить зависимые пакеты и их изменения. Так что при установке чего-то сложного, как TurboGears, вы увидите, что придется установить кучу пакетов. Это одна из причин, почему вы можете использовать virtualenv. В отдельной виртуальной папке вы можете убедиться, все ли пакеты установлены и как они работают. Если что-то не корректно, просто удалите папку virtualenv. В противном случае вам придется идти в вашу папку Python и копаться и попытаться "удалить" (т.е. удалить папки) самостоятельно. Другое дело, что easy_install при установке файла типа egg добавляет этот файл к install.pth на сайт-пакетов, поэтому, когда вы удаляете пакет, вам необходимо изменить файл install.pth. К счастью, вы можете использовать команду pip для удаления. Правда я слышал, смешанные отзывы о том, как хорошо она работает.

Вы можете установить пакет, передав URL непосредственно в easy_install. Еще одна забавная особенность состоит в том, что вы можете сказать easy_install, какую версию вы хотите, и он будет пытаться установить эту версию. Наконец, easy_install можно установить из исходных архивов или из egg. Полный список команд, вы можете прочитать в документации (http://peak.telecommunity.com/DevCenter/setuptools#command-reference)

Создание egg

Файл egg это формат для распространения Python пакетов. Это альтернатива для распространения исходников или исполняемых файлов Windows, но следует отметить, что для  Pythonфайл egg полностью платформа-независим. Мы рассмотрим, как создать свой собственный файл egg с помощью пакета, который мы создали в предыдущем уроке (http://www.blog.pythonlibrary.org/2012/07/08/python-201-creating-modules-and-packages/). Создайте новую папку и разместите папку mymath внутри. Затем создайте файл setup.py в родительском каталоге mymath со следующим содержимым:

from setuptools import setup, find_packages
 
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )


Обратите внимание, что вместо setup пакета distutils, мы используем setup пакета setuptools. Мы также используем функцию find_packages пакета Setuptools, которая будет автоматически искать любые пакеты в текущем каталоге и добавьте их в egg. Чтобы создать сам файл egg, вам необходимо выполнить следующие действия из командной строки:

python setup.py bdist_egg

Это породит много вывода, но когда команда закончится, вы увидите, что у вас есть три новые папки: build, dist и mymath.egg-info. В папке dist вы найдете наш файл egg, mymath-0.1-py2.6.egg. Обратите внимание, что на моей машине, по умолчанию Python 2,6 и мы создали egg для этой версии Python. Сам файл egg это архив типа zip. Если вы измените расширение на zip, вы можете заглянуть внутрь и увидеть, что у него есть две папки: mymath и EGG-INFO. Теперь вы можете указать easy_install на наш egg и пакет будет установлен.
 
Если вы хотите, вы также можете использовать easy_install для загрузки своих файлов egg или источник непосредственно в индекс Python Package (PyPI) с помощью следующих команд (скопированны из документов):

setup.py bdist_egg upload # create an egg and upload it
setup.py sdist upload # create a source distro and upload it
setup.py sdist bdist_egg upload # create and upload both

Чтение по поводу


 
--------
ОТ СЕБЯ
Хотели сделать просто и универсально!
ВОПРОС
А что если пакет уже установлен и версия его выше? 
 
 

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога