achille-martin / pyqt-crom

Create cross-platform apps (Android for now) using only Python and the Qt Framework (PyQt5 for now).
MIT License
25 stars 2 forks source link

additional random notes on the startup experience #37

Closed mcdurdin closed 4 months ago

mcdurdin commented 4 months ago

We got the demo app going yesterday. Some notes I took along the way, sorry I don't have more detail:

  1. pyqtdeploy was missing from the instructions --> pip install pyqtdeploy
  2. Qt was installed to ~/Qt, not ~/Qt5.15.2, but QT_DIR was Qt5.15.2 --> mv ~/Qt ~/Qt5.15.2
  3. ~/.local/bin was not on path for pip modules --> export PATH=$HOME/.local/bin:$PATH
  4. sip-module and pyqt-builder were missing --> pip install sip pyqt-builder

Hope these help!

achille-martin commented 4 months ago

Thanks @mcdurdin for your input,

Good news

The good thing is that all these instructions are actually in the README under Getting Started.

Pip modules

pyqtdeploy was missing from the instructions ~/.local/bin was not on path for pip modules sip-module and pyqt-builder were missing

These are all installed in a python3 virtual environment so that it does not mess up the python package list if anything goes wrong. Additionally, if anything does go wrong, one can delete and start again.

The instructions to setup the python3 virtual environment start from here.

All the python modules required for PyQt-CroM are listed in requirements.txt and installed in the python3 virtual environment through this command.

Qt installation

Qt was installed to ~/Qt, not ~/Qt5.15.2, but QT_DIR was Qt5.15.2

The Qt folder is set at this step. The reason why it's ~/Qt5.15.2 is so that one can have multiple Qt installations on their machine and select whichever they need.

The instructions are probably not as clear as they should be because the user needs to set the path $HOME/Qt5.15.2 in the Qt installer directly.

Ultimately, I am trying to create an automatic installer for PyQt-CroM so that any user can setup up their whole machine with one unique .sh script for instance. The task is captured here, but it's low priority.

Limitations

Now, if you mention that you had to make some changes while going through the README, it means that the instructions are buried in so much text or not actually clear. Therefore, I'll need to figure out a way to make them clearer.

In an attempt to make the tutorial a lot clearer, why do you think you missed the instructions?

This will help me focus on the bits that are unclear in the README.

mcdurdin commented 4 months ago

Good to hear. I think we probably lost the venv when we were trying to figure out the issue in #36 -- we started a new shell at some point.

There are a lot of steps in the README; more scripting would probably be the best way to simplify things.

And I guess I just didn't see the option to set the path for Qt in the installer.

One more point of feedback -- my son had been playing with PtQtDeploy before, and the only step that was very difficult was building sysroot.toml -- documentation on how to build that seems very sparse. It's difficult to figure out which modules are required, how to specify them, what the options are. We ended up reading the source which wasn't fun. But this isn't actually any issue on your end. So just for ref.

I'll go ahead and close this.

achille-martin commented 4 months ago

Thanks for your feedback, I'll move your comments into this issue because that will help with implementation.

About setting up pyqtdeploy, the reason why I started this project was to understand more about it and share my findings.

I am glad that the only step that is "very" difficult is around sysroot.toml, that means the rest is easy ;)

Joke aside, the intent of this project is to help beginner developers as well, so any way I can provide a better (maybe smaller) interface would be ideal. For now, I have decided to restrict the tutorial around sysroot.toml to accommmodate beginner devs. However, there are more advanced users who are requesting more freedom (like in this issue).

Ultimately, the goal is to contribute to pyqtdeploy / PyQt directly, but I need to get more confidence with the codebase and the design choices.