Understanding paths - weewx/weewx GitHub Wiki

Working with paths in a Unix environment

Understanding how paths work is a rather important part of working with the command-line on any Linux/BSD/Unix system. The PATH environment variable tells the system where to look for commands. It is a colon-delimited list of paths. In the case of weewx, there are typically two paths that matter most: the path to the command and the path to the weewx.conf configuration file.

Let's start with a basic weewx operation: running weewx directly. As explained in the user guide, this means invoking the weewx application, weewxd, while specifying the path to the weewx.conf configuration file. In its most general form, it looks like this:

weewxd --config=weewx.conf

However, the specifics of how this should actually be entered depend on how and where weewx was installed.

Installations using DEB or RPM package

Consider the case where weewx was installed from a .deb or .rpm package. In this case, the following are equivalent:

/usr/bin/weewxd --config=/etc/weewx/weewx.conf
cd /usr/bin
./weewxd --config=/etc/weewx/weewx.conf
weewxd --config=/etc/weewx/weewx.conf

The first example uses an explicit, absolute path to both weewxd and weewx.conf.

The second example shows a cd (change directory) to the directory where the weewxd command is installed, followed by a relative path to weewxd and an absolute path to weewx.conf.

The third example illustrates a special feature of a .deb or .rpm installation. There is file /usr/bin/weewxd that invokes the actual Python code /usr/share/weewx/weewxd.py. Since /usr/bin is in the PATH environment variable, one can simply type weewxd instead of the full path /usr/bin/weewxd.

Installations using pip

Consider the case where WeeWX was installed using pip. In this case, the following will fail:

weewxd --config=/etc/weewx/weewx.conf

It fails because weewxd is not in the PATH. The weewxd and weectl commands are in the Python virtual environment that was created as a part of the pip installation. In order to access those commands, you must put them into the PATH. This is what the virtual environment activate command does. For example, if you installed the virtual environment at ~/weewx-venv, then the environment is activated like this:

source ~/weewx-venv/bin/activate

Then the weewxd command will be found. The activate only has to be done once in a terminal window or login shell — it does not have to be entered before every WeeWX command.

The path to the configuration file

The pattern described above applies to both of the WeeWX commands, weewxd and weectl. For example, the weectl device command is used to display and modify options in the hardware. In addition to requiring a configuration file, it also recognizes many options, such as info or --help. The generic invocation looks like this:

weectl device --config=/path/to/weewx.conf --help

or, even more succinctly:

weectl device --help

The final form is possible because the WeeWX commands will look in the standard locations, /etc/weewx/weewx.conf and ~/weewx-data/weewx.conf, if no configuration file is specified.