I tried to install the "master" branch from gitlab. Is there a guide how to do that. Im strugeling with missing dependencies, missing modules and so on.
Normally running `python -m pip install .` in the directory where you have the code will install all dependencies you need.
(If you want to do development and/or don't want to install those dependencies globally you might want to create a virtual environment specifically for OpenLP so its dependencies are separate from everything else.)
Everything seems to work while installation. Bye the way - currently I try to install it under linux (Ubuntu) because it's much easier to have all the build utilities installed.
How can I run openlp now? There is no starter. So I tried:
./run_openlp.py | Result:
ImportError: cannot import name 'relation' from 'sqlalchemy.orm' (/usr/local/lib/python3.10/dist-packages/SQLAlchemy-2.0.0b2-py3.10.egg/sqlalchemy/orm/__init__.py)
Ah yes, OpenLP doesn't support SQLAlchemy 2.0 yet. You can try "python -m pip install SQLAlchemy==1.4.42" and that should install a compatible version of SQLAlchemy till we get that sorted out.
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
ret = self._execute_context(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
self._handle_dbapi_exception(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
util.raise_(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
raise exception
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
self.dialect.do_execute(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: media_files.file_hash
[SQL: SELECT media_files.id AS media_files_id, media_files.song_id AS media_files_song_id, media_files.file_path AS media_files_file_path, media_files.file_hash AS media_files_file_hash, media_files.type AS media_files_type, media_files.weight AS media_files_weight
FROM media_files
WHERE ? = media_files.song_id ORDER BY media_files.weight]
I changed the work folder of openlp back to standard and imported the songs from the database - problem solved - know it works again. There was something wrong the previous used data folders. Thanks for the hint!
Comments
Normally running `python -m pip install .` in the directory where you have the code will install all dependencies you need.
(If you want to do development and/or don't want to install those dependencies globally you might want to create a virtual environment specifically for OpenLP so its dependencies are separate from everything else.)
I have to install OpenLP on a Windows 11 machine - so i did:
ERROR: Could not find a version that satisfies the requirement setup.py (from versions: none)
ERROR: No matching distribution found for setup.py
What you need is to do
python -m pip install .
Notice the full stop at the end? That's the key part of the command, to tell python to install the current directory, not the setup.py file.
OK - i could install openlp with:
python -m pip install .
Everything seems to work while installation. Bye the way - currently I try to install it under linux (Ubuntu) because it's much easier to have all the build utilities installed.
How can I run openlp now? There is no starter. So I tried:
./run_openlp.py | Result:
ImportError: cannot import name 'relation' from 'sqlalchemy.orm' (/usr/local/lib/python3.10/dist-packages/SQLAlchemy-2.0.0b2-py3.10.egg/sqlalchemy/orm/__init__.py)
The command "openlp" gives the same error...
Ah yes, OpenLP doesn't support SQLAlchemy 2.0 yet. You can try "python -m pip install SQLAlchemy==1.4.42" and that should install a compatible version of SQLAlchemy till we get that sorted out.
YES - now I can start OpenLP. Under Ubuntu the command is:
python3 -m pip install SQLAlchemy==1.4.42
After that a simple "openlp" in the console starts OpenLP.
Thank you!
Next step is: I want to figure out how to install it on a windows machine. I'll leave a comment as soon as I got it.
It's much harder to get the installation to work on Windows :-(
Installed MS Visual Studio but still an error while trying to install:
"Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?"
Don't know what is missing or how to install....
On Windows, you would need to run "python run_openlp.py" -- I don't know what "./run_openlp.py" would do on Windows.
You should look at the builders/window.py file in https://gitlab.com/openlp/packaging
After a fresh install of Ubuntu - i did the same installation as above: creating a folder, git clone, then:
python3 -m pip install .
python3 -m pip install SQLAlchemy==1.4.42
OpenLP is running, but when I try add a song to the service - OpenLP crash:
Traceback (most recent call last):
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
self.dialect.do_execute(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
sqlite3.OperationalError: no such column: media_files.file_hash
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/ralfrupf/.local/lib/python3.10/site-packages/openlp/core/lib/mediamanageritem.py", line 602, in on_add_click
self.add_to_service(item, position=drop_position)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/openlp/core/lib/mediamanageritem.py", line 623, in add_to_service
service_item = self.build_service_item(item, remote=remote, context=ServiceItemContext.Service)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/openlp/core/lib/mediamanageritem.py", line 663, in build_service_item
if self.generate_slide_data(service_item, item=item, remote=remote, context=context):
File "/home/ralfrupf/.local/lib/python3.10/site-packages/openlp/plugins/songs/lib/mediaitem.py", line 627, in generate_slide_data
if song.media_files:
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 482, in __get__
return self.impl.get(state, dict_)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 942, in get
value = self._fire_loader_callables(state, key, passive)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/attributes.py", line 978, in _fire_loader_callables
return self.callable_(state, passive)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/strategies.py", line 912, in _load_for_state
return self._emit_lazyload(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/strategies.py", line 1046, in _emit_lazyload
result = session.execute(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/orm/session.py", line 1714, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
return connection._execute_clauseelement(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
ret = self._execute_context(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
self._handle_dbapi_exception(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
util.raise_(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
raise exception
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
self.dialect.do_execute(
File "/home/ralfrupf/.local/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: media_files.file_hash
[SQL: SELECT media_files.id AS media_files_id, media_files.song_id AS media_files_song_id, media_files.file_path AS media_files_file_path, media_files.file_hash AS media_files_file_hash, media_files.type AS media_files_type, media_files.weight AS media_files_weight
FROM media_files
WHERE ? = media_files.song_id ORDER BY media_files.weight]
[parameters: (14,)]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
sqlite3.OperationalError: no such column: media_files.file_hash
This is a known issue... I either already committed a fix, or I have one queued up for committing.
So, currently there is no way to have working openlp if installed from gitlab?
It's working for me, cause obviously that's how we develop OpenLP, so there must be something in the song you're creating that triggers that error.
What's the commit hash you have there? Mine is bd811c2b7a246964db36814c2ed3839b3eeb8765
I changed the work folder of openlp back to standard and imported the songs from the database - problem solved - know it works again. There was something wrong the previous used data folders. Thanks for the hint!
Ah! You're welcome.