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