Найти - Пользователи
Полная версия: Как грамотно изолировать приложения?
Начало » Python для новичков » Как грамотно изолировать приложения?
1 2 3
Shaman
Razlagutt
ShamanА разве питон сам по себе не портабельный? По-моему очень даже.
Портабельный, только портабельную сборку нужно не из виртуального окружения ваять. Я брал за основу содержимое дистрибутива аналогичной с venv версии и сливал туда виртуалку, а сверху заправлял python*.dll
Razlagutt
Shaman
Правильно ля я тебя понял? Ты использовал не virtualenv, а venv. В ней делал проект и копировал туда длл.
Shaman
Razlagutt
ShamanПравильно ля я тебя понял? Ты использовал не virtualenv, а venv. В ней делал проект и копировал туда длл.
Неправильно. Я просто сократил слово.
Razlagutt
Shaman
Ну тогда я тоже самое сделал.
1. Ставим питон как обычно
2. Через cmd pip install verualenv
3. vertualenv .\my\project
4. .\my\project\Scripts\activate
Потом кидаем длл и все. На чужой машине не работает))))))))
Shaman
В списке не вижу этапа слияния дерева каталогов проекта с дистрибутивом питона.
Проще: сколько файлов содержится в каталоге lib питона и одноимённом каталоге проекта?
Razlagutt
Слияния не было. А ты просто копировал Lib? И только ли Lib? Как ты этот этап делал?
Файлов: в проекте: 47, в исходнике: 163
Подкаталогов: в проекте: 6, в исходнике: 32
Shaman
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}"
Razlagutt
Shaman
Хорошо, завтра попробую. Спасибо!
Razlagutt
Shaman
В общем из предложенного ничего не помогло. Полез в гугл выяснять, что за ошибка это такая 0xc000007b. Выяснилось что с питоном конкретно она не связана, а связана по большей части с глюками дров, ОС и самой программы. Тогда я решил поставить версию старенькую какую-нибудь, 3.2 например. С этой версией запускаю свою прогу на ПК, где питона нет, а он опять просит python34.dll. И тут я понял в чем дело. У меня очень сильно загажена система питоновским мусором разных версий. Во время чистке я воочию увидел, что я прав. После тотальной чистке и установке по новой последней версии интерпретатора все заработало. Правда я уже не стал юзать виртуалку. Просто перенес всю папку с питоном в дргую папку и там ее вычистил, глядя на твой пример, с 180 метров до 64. Создал батник, вызывающий мой скрипт и конвертнул его в ехе.

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