Exe python не работает на другом компьютере
насколько я знаю, у python есть два разных типа зависимостей. Во-первых, вы можете включить библиотеку, которая установлена на вашем компьютере глобально, что позволяет вам хранить одну копию библиотеки для разных кодов Python на вашем компьютере. второй заключается в том, что вы храните копию библиотеки в своем репо, поэтому при создании исполняемого файла не требуется, чтобы на запущенном компьютере были установлены все эти зависимости.
Мое мнение "вы пытаетесь вызвать встроенную / общесистемную библиотеку как внешнюю библиотеку". Portable и built-in совершенно разные вещи. В некоторых пакетах возникла проблема с performance (поэтому нельзя напрямую переносить / делиться с другим приложением), можете ли вы представить, «как ваше приложение обрабатывает символьные ссылки / mem-alloc для всех импортированных модулей?» Если у вас нет проблем с производительностью , вы можете использовать общую библиотеку DLL. Вы не можете запустить вашу программу на другом компьютере без какого-либо системного анализа. Библиотеки, которые могут создавать проблемы: панды, numpy, imutils, opencv
Вы можете решить эти проблемы, используя ctypes (вызывая очень серьезную потерю производительности). Вы можете создать DLL и вставить ее во все неработающие модули. Я знаю, что это раздражает, но я не могу придумать другого способа минимизировать зависимости.
@dsgdfg Спасибо за ответ. Не могли бы вы точно сказать, что мне нужно делать? Я не знаю, как сделать то, что вы только что сказали.
Это распространенная ошибка в ОС Windows. Попробуйте установить распространяемый пакет Microsoft Visual Studio. Выберите правильную версию, совместимую с вашей версией Python. Это решит проблему. Работал у меня.
@vdvaxel Когда вы запускали pyinstaller , должен был быть сгенерированный текстовый файл, чтобы заморозить код, содержащий список предполагаемых недостающих модулей. Не могли бы вы включить содержимое этого файла.
сначала необходимо установить некоторую зависимость. создайте файл require.txt и установите его из фона
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ.
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это.
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и.
Решение
Черное окно называется консолью cmd. Скрипты нужно запускать через него, а не щелкать клювом мышкой по скрипту.
Или написать батник для запуска
а что такое вообще это PATH
Добавлено через 1 минуту
да. запустилось бат. это надо же. чудо, чудо!
Как запустить программу на другом компьютере, где нет delphi?
Здравствуйте. Давно волнует проблема, на других компах где никогда не была установлена delphi не.
Как на питоне скачать файл из Интернета и запустить его?
Как на Питоне скачать файл из Интернета и запустить его? заранее благодарен!
Как запустить 2 функции парраллельно в телеграм боте на питоне?
Всем привет. Я сделал парсер-бота в телеге который парсит валюту с гугла. Вопрос: Как мне сделать.
Запустить внешнюю программу в другом сеансе средствами Powershell
Добрый день! Подскажите, решил ли кто, как можно выполнить программу, код из под другой сессии в.
Какие параметры проекта задавать, чтобы программу можно было запустить на другом компьютере?
Какие параметры проекта задавать чтобы программу можно было запустить на другом компьютере? Что.
Система: Python 3.7 64x, работающий в Windows 10. У меня также установлена Anaconda на моем компьютере, и я программирую через VS Code. Все модули установлены, проверены и обновлены.
Я написал сценарий и скомпилировал его в .exe с помощью pyinstaller. pyinstaller -wFi pyico.ico endpointapp3.py . EXE работает и работает на моем компьютере, но он не предназначен для моего компьютера. Предыдущие итерации этого сценария были скомпилированы, протестированы и должным образом работали на конечном компьютере, компьютере с Windows 7 без установленного Python.
Моя последняя версия теперь включает pyserial и снова работает на моем компьютере, но после компиляции и создания файла .exe для конечной машины я сталкиваюсь с этой ошибкой.
Строка 9 - моя линия import serial
Как я упоминал ранее, этот исполняемый файл работает на моем компьютере, но не на конечном компьютере, для которого он был разработан. Я не хочу устанавливать python или модули python на конечный компьютер, потому что я хочу, чтобы .exe был всеобъемлющим.
Вопросы:
- Почему я получаю эту ошибку? Что это значит?
- Есть ли обходной путь, который позволяет мне скомпилировать все вместе (используя pyinstaller), который будет содержать всю необходимую информацию о модулях в .exe?
- Есть ли что-то еще, что я должен добавить к моему исходному сценарию, что позволит мне поработать над этим?
НЕ ДУПЛИКАТ - этот пост предназначен для компиляции и запуска Python. exe на другом компьютере, независимо от python, без установленных модулей или python.
2 ответа
В общем, клиентская библиотека Firebird является частью сервера Firebird, а не Python (хотя я не знаю, что конкретно называется FCL в Python, но надеюсь, что это не отклоняется от стандартных терминов), и ее следует называть «fbclient.dll» в качестве альтернативы. может называться «fbembed.dll» или «gds32.dll». Однако дело в том, что эта DLL загружается динамически, когда вы пытаетесь подключиться к серверу базы данных.
Файл "app.py", строка 44, в show_DataBase_results
Файл "full_fonctions_fdb.py ", строка 5, в open_database
Ваш журнал показывает, что ваш app.exe на самом деле пытался подключиться к серверу Firebird, чтобы прочитать некоторые «результаты» из некоторой «базы данных». Для этого - требуется Firebird Server. Он пропущен - и чтение базы данных не выполняется.
Теперь, почему ваша установка - не установленное приложение, а простая установка - должна читать базы данных, это выглядит странно для меня, но я не знаю. Найдите и исправьте, чтобы сам установщик не пытался просить сервер Firebird читать данные из баз данных Firebird, тогда ошибка исчезнет.
P.S. также посмотрите эти обсуждения:
P.P.S. также лайфхак:
Есть ли у вас какие-либо идеи? Это файл? Или что-то?
Когда вы задаете себе подобные вопросы - попробуйте использовать SysInternals Process Monitor , чтобы проверить, какой конкретный файл (если это был файл) и в каких конкретных папках ищет ваш "app.exe", прежде чем выдавать эту ошибку. Или, может быть, он ищет данные реестра, а не файлы и т. Д. - журналы реестра также накапливаются ProcMon.
Он не использует термин FCL, он использует термин «клиентская библиотека Firebird», который является правильным и правильным термином для обозначения библиотеки независимо от ее имени файла и платформы. Вы можете увидеть возникшую ошибку здесь, в источниках FDB .
FCL - это просто аббревиатура от ранее использовавшегося и полностью написанного «Клиентская библиотека Firebird». P.S. Я заглянул в исходники и увидел там "волшебную константу" 'fbclient.dll' , скопированную туда и сюда без каких-либо альтернативных имен файлов . Вздох . Даже библиотеки Delphi были сделаны лучше в этом аспекте.
На вопрос "зачем вашей установке читать базы данных?" : мой код создает SQL-запрос, и я хочу проверить его, запросив базу данных. Вот почему мне нужно читать базу данных.
Я попытался добавить файл fbclient.dll в свой каталог exe. Ошибка теперь изменилась. Я отредактировал свой первый пост с новой ошибкой.
Что касается второй ошибки, вам действительно стоит опубликовать новый вопрос. Не превращайте свои вопросы в подвижную цель.
Хотя FDB - это драйвер Python для подключения к Firebird, для него также требуется собственная клиентская библиотека Firebird ( fbclient.dll в Windows, libfbclient.so в Linux). Я не знаю PyInstaller, но предполагаю, что он только упаковывает код Python или требует встроенных зависимостей в определенном месте.
Ошибка указывает на то, что в вашей системе не установлена клиентская библиотека Firebird или, если она установлена, ее разрядность отличается от разрядности вашего исполняемого файла Python. Если Python 32-битный, вам понадобится 32-битная клиентская библиотека Firebird, если 64-битная, то 64-битная.
Вам нужно будет установить клиентскую библиотеку Firebird (например, с помощью установщика Firebird и использовать минимальную установку клиента) или узнать, как вы можете явно включить зависимость с помощью PyInstaller. В качестве альтернативы вы можете использовать драйвер Firebird на чистом Python pyfirebirdsql, которому не нужна собственная зависимость.
Ему, скорее всего, понадобится не только клиент, но и сам сервер, причем нужной версии. Главный вопрос - что и почему установщик пытается читать из баз данных. Если мы этого не знаем - все остальные решения являются предположениями.
2 ответа
С некоторой помощью и полезными советами (спасибо Мартино) я смог решить свою проблему. При компиляции с помощью pyinstaller он создает файл .spec, который фактически использует для компиляции в .exe.
Здесь I выяснил, как правильно добавить информацию о модуле в мой код компиляции.
Как только pyinstaller получил правильную информацию в файле .spec, я смог скомпилировать и выполнить на целевой машине, как и предполагалось.
Модуль называется pyserial , но вызов библиотеки в коде - import serial . Pyinstaller не может завершить сборку, потому что действительно нет модуля с именем serial .
Это будет верно для любого случая, когда имя пакета и вызов оператора импорта не совпадают.
Моя платформа - Windows 10 и Python 3.9. Есть еще один компьютер (Windows server 2008R2) без Python. Поэтому я хочу использовать pyinstaller на своем компьютере и использовать .exe на другом компьютере.
Я пробовал простой скрипт print("hello") и использовал pyinstaller -F myscript.py
.exe работает на моем компьютере, но не работает на другом компьютере.
Ошибка error loading python dll ~ python39.dll
Стоит ли использовать Python 3.8? Или что мне делать?
Проверьте тип операционной системы, если я хорошо помню, если она 32-битная, а ваша программа 64-битная, она не может быть открыта. Убедитесь, что вы создали 32-битную версию, чтобы ее можно было запускать на обоих компьютерах, даже если у них другой процессор.
Pyinstaller - это боль. В прошлый раз, когда я попробовал, это не сработало. Я использовал cx_Freeze, и он отлично работал. Продолжайте использовать pyinstaller, если хотите, но попробуйте найти альтернативу, если что-то не сработает.
1 ответ
Проблема в том, что Pyinstaller не создает полностью автономные исполняемые файлы, он создает зависимости (например, этот python39.dll), поэтому этот python39.dll должен находиться на компьютере, на котором запущен этот исполняемый файл. Поскольку python уже установлен на вашем компьютере, python39.dll уже есть, и все работает нормально. Проблема в том, что на компьютере, на котором вы запускаете эту программу, вероятно, ее не будет.
- Установите python 3.9 на целевую машину (но в этом случае вам не нужно создавать исполняемый файл)
- Включите python39.dll в свою программу
Для второго решения просто создайте папку и переместите в нее свой исполняемый файл, а также эту библиотеку python39.dll. Windows найдет его, потому что он находится в том же каталоге, что и этот исполняемый файл. Вы можете получить эту библиотеку из папки c: \ Windows \ System32 (или где все библиотеки DLL хранятся в вашей системе), а затем просто скопировать ее в папку с исполняемым файлом. После этого отправьте не просто исполняемый файл, а эту папку с библиотекой.
@Stepan написал в комментариях, что вы также можете включить эту библиотеку прямо в свой исполняемый файл, добавив --add-binary "path \ to \ python39.dll" к вашей команде при компиляции. Последняя команда будет выглядеть так:
pyinstaller -F --add-binary "c: \ Windows \ System32 \ python39.dll" myscript.py
Я создал Python exe с помощью PyInstaller .
Мой exe хорошо работает на «исходном» компьютере.
Когда я попытался запустить его на другом компьютере, у меня возникла такая проблема:
Проблема явно в клиентской библиотеке Firebird . Я пытаюсь понять, почему у меня такая проблема и как ее решить.
- Сначала я подумал, что, возможно, это потому, что библиотека fdb импортируется в «суб-файл», поэтому это скрытый импорт, и PyInstaller его не видит. Я импортировал fdb в основной файл приложения, но проблема осталась прежней.
- Я также заглянул в свою переменную среды, думая, что, возможно, мой другой компьютер пропустил одну о fdb, но я не увидел никаких переменных среды, связанных с fdb, на моем «исходном» компьютере.
У вас есть идеи, почему у меня возникла эта проблема? Это файл, который мне нужно поместить в каталог exe? Или что-то я должен сказать PyInstaller?
РЕДАКТИРОВАТЬ: Добавив fbclient.dll в каталог моего exe, ошибка изменилась:
Я проверил, база данных находится в хорошем каталоге (она работает на «исходном» компьютере).
У вас действительно установлена клиентская библиотека Firebird в вашей системе (и немного соответствует вашему питону)? Если вы не хотите зависеть от клиентской библиотеки Firebird, подумайте о переходе на pyfirebirdsql, поскольку он реализует проводной протокол Firebird на чистом Python.
Клиентская библиотека Firebird не установлена в моей «новой» компьютерной системе. Я бы хотел, чтобы мой exe работал без установки. Я посмотрю на PyFireBaseSQL!
Вы можете попробовать использовать Firebird 2.5 Embedded и скопировать его в папку своего приложения - как это было описано в одной из статей, на которые я ссылался. Вы не можете использовать базы данных SAL без SQL-сервера. Но иногда вы можете выбрать между автономным сервером и сервером, встроенным в ваше приложение.
Ответы 1
Вместо того, чтобы устанавливать другие пакеты и расширения, которые могут или не могут быть или каким-то образом содержать правильную DLL, теперь вам нужно точно определить, что именно не может быть найдено.
Я могу предложить три дополнительных метода, ни один из которых не может быть абсолютно уверен в том, чтобы определить точную проблему (конечно, вудуский метод «установить какой-нибудь пакет наугад и посмотреть, исправит ли он его» тоже может работать, и часто работает - но это волшебство, а не компьютер наука):
- самый быстрый: проверьте файл pyimod03_importers.py в строке 714, посмотрите, что он делал, когда было сгенерировано исключение. Из-за стратегии загрузки библиотеки Windows вы можете столкнуться с отвлекающим маневром, когда сообщается, что файла нет, когда он есть на самом деле, потому что он полагается на второй отсутствующий файл, имя которого вам не сообщат.
- Самый простой: используйте такой инструмент, как SysInternals 'DEPENDS.EXE, чтобы проверить файл OMR.EXE. В этом случае это почти гарантированно не сработает, потому что необходимый импорт может быть указан в формате Python, а не в какой-либо форме, которую DEPENDS.EXE распознает.
- наиболее полный, но наименее простой: используйте такой инструмент, как PROCMON от SysInternals, настройте фильтры, чтобы исключить фоновый шум состояния ожидания Windows - их будет очень много - а затем поддельный запуск OMR.EXE; исключить дополнительный шум, создаваемый этим. Вам понадобится около сорока фильтров. Наконец запустите OMR.EXE. Ближе к концу вы увидите серию попыток загрузить SOMETHING.DLL, все безуспешно; первый - это место, где должна быть DLL (Python или OMR), все остальные - подходящие альтернативы.
Исходя из прошлого опыта, я предлагаю настроить виртуальную машину для тестирования, а затем посмотреть, какие пакеты необходимы. Это связано с тем, что первый сбой DLL скроет все последующие, и вам может потребоваться повторить вышеуказанные шаги несколько раз. Тот факт, что первая библиотека, которая вам нужна, предоставляется пакетом NETFX64, а вторая - средой выполнения Microsoft Office, может быть правдой, но когда вы обнаружите, что нужна вторая библиотека, вы также можете узнать, что среда выполнения MSO предоставила бы первый также; поэтому в этот момент, а не раньше, вы обнаруживаете, что пакет NETFX64 на самом деле не нужен, и может упростить ваши требования к установке только для среды выполнения MSO.
Сведение требований к короткому списку может оказаться длительной задачей, и вам может потребоваться перезагрузить компьютер с нуля несколько раз. С виртуальной машиной это легко сделать.
вот скажем написал я программу в среде pycharm а как ее потом открыть на другом ПК? в смысле запустить, конечно.
Как запустить программу на другом компьютере?
Есть комп вин 7 64, на нем стоит прога для 64, запускается через файл *.cmd Как можно запустить.
Как запустить программу на другом компьютере?
Написал я приложение, хочу чтобы пользовались на другом компьютере. Как это лучше осуществить? Не.
Как запустить программу на другом компьютере?
Создаём пустой проект windows form. Что надо выставить в компиляторе что бы программа 1).
Как запустить ЧЕРТОВУ программу на другом компьютере?
Понимаете. Я потратил 4(. ) чертовых дня на эту проблему. Прошел все круги ада, все сделал! А.
Если на другом ПК установлен интерпретатор, то просто запустить. Ну а если не установлен, то установить и запустить. На маке и ОС на ядре линукс, интерпретатор идёт из коробки. На винде надо устанавливать.
а что надо установить, чтобы пошел но без pycharm
как выглядит этот интерпретатор в минимальном моменте так сказать.
я загрузил уже давно. если я запускаю через него тот файл который отлично работает на pycharm(файл с расширением py)
просто на мгновение открывается темное окно и все
Добавлено через 2 минуты
Читайте также: