Pyinstaller "ValueError: Невозможно смешать абсолютные и относительные пути" - PullRequest
0 голосов
/ 12 апреля 2020

Я использую windows 10 и anaconda3 для управления своими python пакетами. Я впервые использую python, и я пытаюсь создать собственную программу gui с pyqt5. Также я пытаюсь сделать .exe файл с помощью Pyinstaller. Проблема, с которой я сталкиваюсь, заключается в том, что .exe выдает блок ошибок:

(pyqt5_env) C:\Python Projects>pyinstaller -w -F App_ver05.py
268 INFO: PyInstaller: 4.0.dev0+b3dd91c8a8
268 INFO: Python: 3.7.7 (conda)
268 INFO: Platform: Windows-10-10.0.18362-SP0
Traceback (most recent call last):
  File "c:\anaconda3\envs\pyqt5_env\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\anaconda3\envs\pyqt5_env\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Anaconda3\envs\pyqt5_env\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "c:\anaconda3\envs\pyqt5_env\lib\site-packages\PyInstaller\__main__.py", line 112, in run
    spec_file = run_makespec(**vars(args))
  File "c:\anaconda3\envs\pyqt5_env\lib\site-packages\PyInstaller\__main__.py", line 58, in run_makespec
    spec_file = PyInstaller.building.makespec.main(filenames, **opts)
  File "c:\anaconda3\envs\pyqt5_env\lib\site-packages\PyInstaller\building\makespec.py", line 458, in main
    specfile.write(onefiletmplt % d)
  File "c:\anaconda3\envs\pyqt5_env\lib\site-packages\PyInstaller\building\makespec.py", line 101, in __repr__
    self.variable_prefix, self.filename_suffix = make_variable_path(self.path)
  File "c:\anaconda3\envs\pyqt5_env\lib\site-packages\PyInstaller\building\makespec.py", line 84, in make_variable_path
    if os.path.commonpath([filename, from_path]) == from_path:
  File "c:\anaconda3\envs\pyqt5_env\lib\ntpath.py", line 615, in commonpath
    raise ValueError("Can't mix absolute and relative paths") from None
ValueError: Can't mix absolute and relative paths

Одна и та же ошибка возникает независимо от того, какой файл .py используется. Для информации, я написал используемый код ниже.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        btn1 = QPushButton('&Button1', self)
        btn1.setCheckable(True)
        btn1.toggle()

        vbox = QVBoxLayout()
        vbox.addWidget(btn1)

        self.setLayout(vbox)
        self.setWindowTitle('QPushButton')
        self.setGeometry(300, 300, 300, 200)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

Я удалил и переустановил pyinstaller, но он не работал. Я не думаю, что это проблема кода, потому что код действительно прост. Кто-нибудь может дать решение или намекнуть на эту проблему?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Что случилось со мной, так это то, что в имени абсолютного пути был пробел. Как только проект был перемещен в каталог без пробелов, он смог собрать

0 голосов
/ 13 апреля 2020

Решением этой проблемы является использование полного имени файла и добавление флага -F к имени файла. В вашем случае, например, если для файла App_ver05.py абсолютный путь:

/ home / user123 / Desktop / foldername / App_ver05.py

Затем используйте команда:

pyinstaller -F /home/user123/Desktop/foldername/App_ver05.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...