171 lines
5.6 KiB
ReStructuredText
171 lines
5.6 KiB
ReStructuredText
.. _a_source:
|
||
|
||
*******************
|
||
Running from Source
|
||
*******************
|
||
|
||
.. _main website: https://novelwriter.io
|
||
.. _GitHub: https://github.com/vkbo/novelWriter/releases
|
||
.. _PyPi: https://pypi.org/project/novelWriter/
|
||
.. _Sphinx Docs: https://www.sphinx-doc.org/
|
||
|
||
This section describes various ways of running novelWriter directly from the source code, and how
|
||
to build the various components like the translation files and documentation.
|
||
|
||
.. note::
|
||
The text below assumes the command ``python`` corresponds to a Python 3 executable. Python 2 is
|
||
now deprecated, but many systems still have both Python 2 and 3. For such systems, the command
|
||
``python3`` may be needed instead. Likewise, ``pip`` may need to be replaced with ``pip3``.
|
||
|
||
Most of the custom commands for building packages of novelWriter, or building assets, are contained
|
||
in the ``pkgutils.py`` script in the root of the source code. You can list the available commands
|
||
by running:
|
||
|
||
.. code-block:: bash
|
||
|
||
python pkgutils.py help
|
||
|
||
.. warning::
|
||
|
||
Calling ``setup.py install`` has been deprecated for a while, and this approach is no longer
|
||
actively supported in novelWriter either.
|
||
|
||
|
||
.. _a_source_depend:
|
||
|
||
Dependencies
|
||
============
|
||
|
||
novelWriter has been designed to rely on as few dependencies as possible. Aside from the packages
|
||
needed to communicate with the Qt GUI libraries, only one package is required for handling the XML
|
||
format of the main project file. Everything else is handled with standard Python libraries.
|
||
|
||
The following Python packages are needed to run novelWriter:
|
||
|
||
* ``PyQt5`` – needed for connecting with the Qt5 libraries.
|
||
* ``PyEnchant`` – needed for spell checking (optional).
|
||
|
||
PyQt/Qt should be at least 5.10, but ideally 5.13 or higher for all features to work. For instance,
|
||
searching using regular expressions with full Unicode support requires 5.13.
|
||
|
||
If you want spell checking, you must install the ``PyEnchant`` package. The spell check library
|
||
must be at least 3.0 to work with Windows. On Linux, 2.0 also works fine.
|
||
|
||
If you install from PyPi, these dependencies should be installed automatically. If you install from
|
||
source, dependencies can still be installed from PyPi with:
|
||
|
||
.. code-block:: bash
|
||
|
||
pip install -r requirements.txt
|
||
|
||
.. note::
|
||
|
||
On Linux distros, the Qt library is usually split up into multiple packages. In some cases,
|
||
secondary dependencies may not be installed automatically. For novelWriter, the library files
|
||
for renderring the SVG icons may be left out and needs to be installed manually. This is the
|
||
case on for instance Arch Linux.
|
||
|
||
|
||
.. _a_source_install:
|
||
|
||
Build and Install from Source
|
||
=============================
|
||
|
||
If you want to install novelWriter directly from the source available on GitHub_, you must first
|
||
build the package using the Python Packaging Authority's build tool. It can be installed with:
|
||
|
||
.. code-block:: bash
|
||
|
||
pip install --upgrade build
|
||
|
||
On Debian-based systems the tool can also be installed with:
|
||
|
||
.. code-block:: bash
|
||
|
||
sudo apt install python3-build
|
||
|
||
With the tool installed, run the following command from the root of the novelWriter source code:
|
||
|
||
.. code-block:: bash
|
||
|
||
python -m build
|
||
|
||
This should generate two files in the ``dist/`` folder at your current location. One with file
|
||
extension ``.tar.gz`` and one with extension ``.whl``. The latter is the package you want to
|
||
install, here with example version number 2.0.7, but your may be different:
|
||
|
||
.. code-block:: bash
|
||
|
||
pip install --user dist/novelWriter-2.0.7-py3-none-any.whl
|
||
|
||
|
||
.. _a_source_i18n:
|
||
|
||
Building the Translation Files
|
||
==============================
|
||
|
||
If you installed novelWriter from a package, the translation files should be pre-built and
|
||
included. If you're running novelWriter from the source code, you will need to generate the files
|
||
yourself. The files you need will be written to the ``novelwriter/assets/i18n`` folder, and will
|
||
have the ``.qm`` file extension.
|
||
|
||
You can build the ``.qm`` files with:
|
||
|
||
.. code-block:: bash
|
||
|
||
python pkgutils.py qtlrelease
|
||
|
||
This requires that the Qt Linguist tool is installed on your system. On Ubuntu and Debian, the
|
||
needed package is called ``qttools5-dev-tools``.
|
||
|
||
.. note::
|
||
If you want to improve novelWriter with translation files for another language, or update an
|
||
existing translation, instructions for how to contribute can be found in the ``README.md`` file
|
||
in the ``i18n`` folder of the source code.
|
||
|
||
|
||
.. _a_source_sample:
|
||
|
||
Building the Example Project
|
||
============================
|
||
|
||
In order to be able to create new projects from example files, you need a ``sample.zip`` file in
|
||
the ``assets`` folder of the source. This file can be built from setup script by running:
|
||
|
||
.. code-block:: bash
|
||
|
||
python pkgutils.py sample
|
||
|
||
|
||
.. _a_source_docs:
|
||
|
||
Building the Documentation
|
||
==========================
|
||
|
||
A local copy of this documentation can be generated as HTML. This requires the following Python
|
||
packages from PyPi:
|
||
|
||
.. code-block:: bash
|
||
|
||
pip install furo sphinx
|
||
|
||
The documentation can then be built from the root folder in the source code by running:
|
||
|
||
.. code-block:: bash
|
||
|
||
make -C docs html
|
||
|
||
If successful, the documentation should be available in the ``docs/build/html`` folder and you can
|
||
open the ``index.html`` file in your browser.
|
||
|
||
You can also build a PDF manual from the documentation using the setup script:
|
||
|
||
.. code-block:: bash
|
||
|
||
python pkgutils.py manual
|
||
|
||
This will build the documentation as a PDF using LaTeX. The file will then be copied into the
|
||
assets folder and made available in the :guilabel:`Help` menu in novelWriter. The Sphinx build
|
||
system has a few extra dependencies when building the PDF. Please check the `Sphinx Docs`_ for more
|
||
details.
|