Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2015 22:09:02

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Razlagutt
ShamanА разве питон сам по себе не портабельный? По-моему очень даже.
Портабельный, только портабельную сборку нужно не из виртуального окружения ваять. Я брал за основу содержимое дистрибутива аналогичной с venv версии и сливал туда виртуалку, а сверху заправлял python*.dll

Отредактировано Shaman (Фев. 5, 2015 22:12:41)

Офлайн

#2 Фев. 5, 2015 22:21:59

Razlagutt
Зарегистрирован: 2015-02-05
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Shaman
Правильно ля я тебя понял? Ты использовал не virtualenv, а venv. В ней делал проект и копировал туда длл.

Офлайн

#3 Фев. 5, 2015 22:27:13

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Razlagutt
ShamanПравильно ля я тебя понял? Ты использовал не virtualenv, а venv. В ней делал проект и копировал туда длл.
Неправильно. Я просто сократил слово.

Офлайн

#4 Фев. 5, 2015 22:35:49

Razlagutt
Зарегистрирован: 2015-02-05
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Shaman
Ну тогда я тоже самое сделал.
1. Ставим питон как обычно
2. Через cmd pip install verualenv
3. vertualenv .\my\project
4. .\my\project\Scripts\activate
Потом кидаем длл и все. На чужой машине не работает))))))))

Офлайн

#5 Фев. 5, 2015 22:39:46

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

В списке не вижу этапа слияния дерева каталогов проекта с дистрибутивом питона.
Проще: сколько файлов содержится в каталоге lib питона и одноимённом каталоге проекта?

Офлайн

#6 Фев. 5, 2015 22:46:39

Razlagutt
Зарегистрирован: 2015-02-05
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Слияния не было. А ты просто копировал Lib? И только ли Lib? Как ты этот этап делал?
Файлов: в проекте: 47, в исходнике: 163
Подкаталогов: в проекте: 6, в исходнике: 32

Офлайн

#7 Фев. 5, 2015 22:53:18

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Razlagutt
А ты просто копировал Lib? И только ли Lib?
Да - только Lib копировал в голый дистрибутив питона ибо там все необходимые библиотеки. Каталог scripts виртуалки не нужен, равно как и include c libs самого питона.
Часть скрипта Inno Setup одного из проектов:
[Files]
Source: "DLLs\*"; DestDir: "{app}\DLLs"; Flags: recursesubdirs
Source: "Lib\*"; DestDir: "{app}\Lib"; Flags: recursesubdirs
Source: "oms\*"; DestDir: "{app}\oms"; Flags: recursesubdirs
Source: "python.exe"; DestDir: "{app}"
Source: "pythonw.exe"; DestDir: "{app}"
Source: "w9xpopen.exe"; DestDir: "{app}"
Source: "python27.dll"; DestDir: "{app}"
Source: "exchange.ico"; DestDir: "{app}"

Source: "pgpass.conf.add"; DestDir: "{tmp}"
Source: "install.cmd"; DestDir: "{tmp}"
Source: "vcredist_x86(2008).exe"; DestDir: "{tmp}"
Source: "postgresql-9.3.5-3-windows.exe"; DestDir: "{tmp}"; AfterInstall: AfterComponentInstall()

[Icons]
Name: "{group}\{cm:Launch}"; Filename: "{app}\pythonw.exe"; Parameters: """{app}\oms\main.py"""; IconFilename: "{app}\exchange.ico"
Name: "{commondesktop}\{cm:LaunchDesktop}"; Filename: "{app}\pythonw.exe"; Parameters: """{app}\oms\main.py"""; IconFilename: "{app}\exchange.ico"
Name: "{group}\{cm:UninstIcon}"; Filename: "{uninstallexe}"

Офлайн

#8 Фев. 5, 2015 23:05:51

Razlagutt
Зарегистрирован: 2015-02-05
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Shaman
Хорошо, завтра попробую. Спасибо!

Офлайн

#9 Фев. 7, 2015 12:15:05

Razlagutt
Зарегистрирован: 2015-02-05
Сообщения: 18
Репутация: +  0  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Shaman
В общем из предложенного ничего не помогло. Полез в гугл выяснять, что за ошибка это такая 0xc000007b. Выяснилось что с питоном конкретно она не связана, а связана по большей части с глюками дров, ОС и самой программы. Тогда я решил поставить версию старенькую какую-нибудь, 3.2 например. С этой версией запускаю свою прогу на ПК, где питона нет, а он опять просит python34.dll. И тут я понял в чем дело. У меня очень сильно загажена система питоновским мусором разных версий. Во время чистке я воочию увидел, что я прав. После тотальной чистке и установке по новой последней версии интерпретатора все заработало. Правда я уже не стал юзать виртуалку. Просто перенес всю папку с питоном в дргую папку и там ее вычистил, глядя на твой пример, с 180 метров до 64. Создал батник, вызывающий мой скрипт и конвертнул его в ехе.

Еще вопрос. Ты пробовал писать скрипт на 64-разрядном питоне, а потом запускать его на ПК 32-разрядном? Работает вообще?

Офлайн

#10 Фев. 7, 2015 13:49:40

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как грамотно изолировать приложения?

Razlagutt
Тогда я решил поставить версию старенькую какую-нибудь, 3.2 например. С этой версией запускаю свою прогу на ПК, где питона нет, а он опять просит python34.dll.
При смене основной версии питона нужно так же заменять в проекте все питоновские библиотеки, имеющие бинарные составляющие (*.pyd).
Razlagutt
Ты пробовал писать скрипт на 64-разрядном питоне, а потом запускать его на ПК 32-разрядном? Работает вообще?
Давненько когда-то пробовал запускать и утыкался в разницу размеров int, но эта проблема может вылезти только в ряде довольно специфических случаев, где она ожидаема. Чтобы не заморачиваться пока всё делаю под x86.

Отредактировано Shaman (Фев. 7, 2015 14:10:50)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version