Skip to content

Commit

Permalink
Read serviceconfig path from __file__ or exe location and update READ…
Browse files Browse the repository at this point in the history
…ME. (#355)

* Updating README to mention requiring pyinstaller to be installed to venv, and the requirement to include .serviceconfig file.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

* Updating loading serviceconfig to use executable path if frozen attribute exists.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

* Updating README.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

* Fixing example renders.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

* Reverting change to test utilities as it is unnecessary.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

* Updating README with suggestions from PR.

Signed-off-by: Chris Delpire <chris.delpire@ni.com>

---------

Signed-off-by: Chris Delpire <chris.delpire@ni.com>
  • Loading branch information
DelpireNI authored Aug 24, 2023
1 parent f54b16e commit 4bb484b
Show file tree
Hide file tree
Showing 15 changed files with 48 additions and 20 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,12 +231,12 @@ Examples to start the fictitious file named `foo_measurement.py`:

### Create Executable for Python Scripts

To create an executable from a measurement, measurement authors can use the [pyinstaller](https://www.pyinstaller.org/) tooling. During the executable creation, the user can also embed the User Interface file using the `--add-data "<path_of_the_UI_File>;."`.
To create an executable from a measurement, you can use the [pyinstaller](https://www.pyinstaller.org/) tooling. If you are using a Poetry project, add `pyinstaller` to its `dev-dependencies`. When statically registering the service, install the EXE into a unique directory along with its .serviceconfig and UI files.

Typical Pyinstaller command to build executable.
Typical PyInstaller command to build executable:

```cmd
pyinstaller --onefile --console --add-data "<path_of_the_UI_File>;." --paths .venv\Lib\site-packages\ <path_of_the_measurement_script>
pyinstaller --onefile --console --paths .venv\Lib\site-packages measurement.py
```

## Troubleshooting
Expand Down
4 changes: 3 additions & 1 deletion examples/nidaqmx_analog_input/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
import pathlib
import sys
from typing import Optional

import click
Expand All @@ -20,7 +21,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIDAQmxAnalogInput.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/nidcpower_source_dc_voltage/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
import pathlib
import sys
import time
from typing import Iterable

Expand All @@ -27,7 +28,8 @@
NIDCPOWER_WAIT_FOR_EVENT_TIMEOUT_ERROR_CODE = -1074116059
NIDCPOWER_TIMEOUT_EXCEEDED_ERROR_CODE = -1074097933

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIDCPowerSourceDCVoltage.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/nidigital_spi/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
import pathlib
import sys
from typing import Iterable, Tuple, Union

import click
Expand All @@ -21,7 +22,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIDigitalSPI.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/nidmm_measurement/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import logging
import math
import pathlib
import sys
from enum import Enum
from typing import Tuple

Expand All @@ -23,7 +24,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIDmmMeasurement.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/nifgen_standard_function/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import contextlib
import logging
import pathlib
import sys
import time
from enum import Enum
from typing import Tuple
Expand All @@ -29,7 +30,8 @@
NIFGEN_OPERATION_TIMED_OUT_ERROR_CODE = -1074098044
NIFGEN_MAX_TIME_EXCEEDED_ERROR_CODE = -1074118637

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIFgenStandardFunction.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/niscope_acquire_waveform/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
import pathlib
import sys
import time
from typing import Tuple

Expand All @@ -23,7 +24,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIScopeAcquireWaveform.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/niswitch_control_relays/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import contextlib
import logging
import pathlib
import sys
from typing import Tuple

import click
Expand All @@ -22,7 +23,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NISwitchControlRelays.serviceconfig",
version="0.1.0.0",
Expand Down
4 changes: 3 additions & 1 deletion examples/nivisa_dmm_measurement/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import logging
import pathlib
import sys
from enum import Enum
from typing import Tuple

Expand All @@ -27,7 +28,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "NIVisaDmmMeasurement.serviceconfig",
version="0.1.0.0",
Expand Down
6 changes: 4 additions & 2 deletions examples/sample_measurement/measurement.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
"""Perform a loopback measurement with various data types."""
import logging
import pathlib
import sys
from enum import Enum

import click
from _helpers import verbosity_option, configure_logging
from _helpers import configure_logging, verbosity_option

try:
from _stubs import color_pb2
Expand All @@ -13,7 +14,8 @@

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
sample_measurement_service = nims.MeasurementService(
service_config_path=service_directory / "SampleMeasurement.serviceconfig",
version="0.1.0.0",
Expand Down
6 changes: 4 additions & 2 deletions examples/sample_streaming_measurement/measurement.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
"""Returns the number of responses requested at the requested interval."""
import logging
import pathlib
import sys
import threading
import time
from typing import Generator, List, Tuple

import click
import grpc
from _helpers import verbosity_option, configure_logging
from _helpers import configure_logging, verbosity_option

import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "SampleStreamingMeasurement.serviceconfig",
version="0.1.0.0",
Expand Down
6 changes: 4 additions & 2 deletions examples/ui_progress_updates/measurement.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,23 @@
import logging
import pathlib
import random
import sys
import threading
import time
from typing import Generator, List, Tuple

import click
import grpc
from _helpers import verbosity_option, configure_logging
from _helpers import configure_logging, verbosity_option

import ni_measurementlink_service as nims

RANDOM_NUMBERS_PER_SECOND = 100.0
RANDOM_NUMBER_RANGE = 10.0
UI_UPDATE_INTERVAL_IN_SECONDS = 100e-3

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "UIProgressUpdates.serviceconfig",
version="0.5.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@
"""A default measurement with an array in and out."""
import logging
import pathlib
import sys

import click
import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "${serviceconfig_file}",
version="${version}",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"""A default measurement with an array in and out."""
import logging
import pathlib
import sys

import click
import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "SampleMeasurement.serviceconfig",
version="1.2.3.4",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
"""A default measurement with an array in and out."""
import logging
import pathlib
import sys

import click
import ni_measurementlink_service as nims

service_directory = pathlib.Path(__file__).resolve().parent
script_or_exe = sys.executable if getattr(sys, "frozen", False) else __file__
service_directory = pathlib.Path(script_or_exe).resolve().parent
measurement_service = nims.MeasurementService(
service_config_path=service_directory / "SampleMeasurement.serviceconfig",
version="1.2.3.4",
Expand Down

0 comments on commit 4bb484b

Please sign in to comment.