Как упаковать скрип python в pycharm в exe файл?

Знаю что было много ответов на этот вопрос но у меня ничего не выходит(
написал pip install pyinstaller
вот что выдает
ERROR: Exception:
Traceback (most recent call last):
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 160, in exc_logging_wrapper
status = run_func(*args)
^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 247, in wrapper
return func(self, options, args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\commands\install.py", line 326, in run
session = self.get_default_session(options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 98, in get_default_session
self._session = self.enter_context(self._build_session(options))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 125, in _build_session
session = PipSession(
^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\network\session.py", line 343, in __init__
self.headers["User-Agent"] = user_agent()
^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\network\session.py", line 175, in user_agent
setuptools_dist = get_default_environment().get_distribution("setuptools")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 188, in get_distribution
return next(matches, None)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 183, in
matches = (
^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions
for dist in self._iter_distributions():
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions
for dist in finder.find_eggs(location):
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs
yield from self._find_eggs_in_zip(location)
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip
from pip._vendor.pkg_resources import find_eggs_in_zip
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
Traceback (most recent call last):
File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Scripts\pip.exe\__main__.py", line 7, in
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\main.py", line 70, in main
return command.main(cmd_args)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 101, in main
return self._main(args)
^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 216, in _main
self.handle_pip_version_check(options)
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 179, in handle_pip_version_check
session = self._build_session(
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 125, in _build_session
session = PipSession(
^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\network\session.py", line 343, in __init__
self.headers["User-Agent"] = user_agent()
^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\network\session.py", line 175, in user_agent
setuptools_dist = get_default_environment().get_distribution("setuptools")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 188, in get_distribution
return next(matches, None)
^^^^^^^^^^^^^^^^^^^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 183, in
matches = (
^
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\base.py", line 612, in iter_all_distributions
for dist in self._iter_distributions():
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 176, in _iter_distributions
for dist in finder.find_eggs(location):
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 146, in find_eggs
yield from self._find_eggs_in_zip(location)
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_internal\metadata\importlib\_envs.py", line 123, in _find_eggs_in_zip
from pip._vendor.pkg_resources import find_eggs_in_zip
File "C:\Users\romas\PycharmProjects\pythonProject2\venv\Lib\site-packages\pip\_vendor\pkg_resources\__init__.py", line 2164, in
register_finder(pkgutil.ImpImporter, find_on_path)
^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?


на команду pyinstaller main.py
выдает вот это
pyinstaller : Имя "pyinstaller" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1
+ pyinstaller main.py
+ ~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (pyinstaller:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
  • Вопрос задан
  • 362 просмотра
Пригласить эксперта
Ответы на вопрос 2
@maximq
QA Engineer
Для начала почините pip, ваши ошибки происходят из-за использования python 3.12, из него удалили устаревший класс pkgutil.ImpImporter.
Инструкция по ремонту pip для python 3.12: https://stackoverflow.com/a/77364602

Либо удалите python 3.12 и установите более раннюю — последний вариант предпочтительнее, т.к. в дальнейшем с другими библиотеками может возникнуть аналогичная ситуация с поддержкой на последней версии python. Часто используемые версии python обычно не последние версии, по этому не стоит бежать впереди поезда: 3.7-3.10
Ответ написан
Комментировать
MicroProger
@MicroProger
Работает - не трогай
попробуйте сначала обновить pip
python -m pip install --upgrade pip

потом устанавливаем pyinstaller
pip install pyinstaller

чтобы упаковать скрипт, нужно также использовать флаг -F, иначе вы получите папку
pyinstaller -F main.py
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы