pyqtdeploy: files not packages as defined in pdt file

Phil Thompson phil at riverbankcomputing.com
Mon Jan 25 16:40:28 GMT 2021


Can you try the current snapshot? I've been meaning to make a new 
release for a while.

https://www.riverbankcomputing.com/software/pyqtdeploy/download

Phil

On 25/01/2021 15:41, Frans Fürst wrote:
> Hello community,
> 
> I seem to have some problems using the `pyqtdeploy`-UI. I try to
> specify files for a small project with the following file structure:
> 
> .
> ├── pyqt5-template
> ├── pyqt5-template.pdt
> └── application
> ├── __init__.py
> └── ui
> ├── __init__.py
> ├── mainwindow.ui
> └── mainwindow.py
> 
> I tried to create a project file from scratch step by step using
> pyqtdeploy 3.1.0
> 
> 1: run pyqtdeploy: $ pyqtdeploy myapp.pdt
> 
> Here is the 1st strange thing: I get an error, when I don't provide a
> project file name and the
> file also has to exist - isn't there a way to start without a project 
> file?
> 
> 2: copy project file from demo, rename it to myapp.pdt
> 3: provide main script and standard-Packages
> 4: "Remove all" to start clean
> 5: "Scan.." => select folder 'application' => add required files
> 6: Save & exit
> 
> Strange thing 2: absolute path will be added to the package, so the
> project file contains the
> following package definition:
> 
>> [Application.Package]
>> name = "/home/me/myapp/application"
>> exclude = [ "*.pyc", "*.pyd", "*.pyo", "*.pyx", "*.pxi", 
>> "__pycache__", "*-info", "EGG_INFO", "*.so",]
>> [[Application.Package.Content]]
>> name = "__init__.py"
>> included = true
>> is_directory = false
> 
> Despite this is not portable from machine to machine, building and
> running the app doesn't work neither: _some_ (but not all) files will
> report
> 
>> shutil.SameFileError: '/home/me/myapp/application/ui/mainwindow.ui' 
>> and '/home/me/myapp/application/ui/mainwindow.ui'
> 
> if I remove mainwindow.ui from the project compilation succeedes but
> running it will get me:
> 
>> ModuleNotFoundError: No module named 'application'
> 
> 4: So I strip the path manually:
> 
>> [Application.Package]
>> name = "application"
>> exclude = [ "*.pyc", "*.pyd", "*.pyo", "*.pyx", "*.pxi", 
>> "__pycache__", "*-info", "EGG_INFO", "*.so",]
>> [[Application.Package.Content]]
>> name = "__init__.py"
>> included = true
>> is_directory = false
>> 
>> [[Application.Package.Content]]
>> name = "ui"
>> included = true
>> is_directory = true
>> 
>> [[Application.Package.Content.Content]]
>> name = "__init__.py"
>> included = true
>> is_directory = false
>> 
>> [[Application.Package.Content.Content]]
>> name = "mainwindow.py"
>> included = true
>> is_directory = false
>> 
>> [[Application.Package.Content.Content]]
>> name = "mainwindow.ui"
>> included = true
>> is_directory = false
> 
> Now the application compiles successfully but when I run it I get
> 
>> ModuleNotFoundError: No module named 'application.ui.mainwindow'
> 
> which is caused by
> 
>> from .mainwindow import MainWindow
> 
> inside application.ui.__init__.py
> 
> I tried to import application.ui.mainwindow in different ways without
> success, so I opened the binary in a hex editor and found out that the
> only three files seem to be those:
> 
> ├── pyqt5-template
> └── application
> ├── __init__.py
> └── ui
> └── __init__.py
> 
> but __main__.py, mainwindow.py and mainwindow.ui are missing.
> 
> What have I done wrong?


More information about the PyQt mailing list