hoooooon
hoooooon

Reputation: 13

Pyinstaller "ValueError: Can't mix absolute and relative paths"

I am using windows 10 and anaconda3 to manage my python packages. This is my first time to use python, and I'm trying to make my own gui program with pyqt5. Also I'm trying to make .exe file using Pyinstaller. The issue I am running into is that the .exe is throwing the error block:

(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

The same error occurs regardless of which .py file is used. For information, I wrote the used code below.

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_())

I uninstalled and reinstalled pyinstaller but it didn't work. I don't think its a code issue because the code is really simple. Can anyone give a solution or hint for this problem?

Upvotes: 1

Views: 1378

Answers (2)

Luckabo
Luckabo

Reputation: 74

What happened for me is that the absolute path name had a space in it. Once the project was moved to a directory without spaces it was able to build

Upvotes: 1

sid gupta
sid gupta

Reputation: 11

The solution of this problem is to use the full file name and append the flag -F to the file name. In your case for example if for the file App_ver05.py the absolute path is :

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

Then use the command :

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

Upvotes: 0

Related Questions