genie_python Troubleshooting - ISISComputingGroup/ibex_developers_manual GitHub Wiki
Genie_python writes its logs to C:\Instrument\var\logs\genie_python
.
The following is written to the log when a virtual circuit disconnects from the IOC side:
2018-05-21T15:21:31 (CA) (15712) ERROR: CAException: type=-1 state=192 op=5 file=..\cac.cpp lineNo=1223
2018-05-21T15:21:31 (CA) (15712) ERROR: CAException: type=6 state=192 op=0 file=..\getCopy.cpp lineNo=92
The time stamp on these are for the first get_pv
call or equivalent after a disconnect.
There can be multiple problems, check:
- Block exists
- Block is spelt correctly, use
b.
and autocomplete - Try getting the underlying PV
g.get_pv("IN:<instrument>:CS:SB:<Block name?")
- Restart the GUI genie_python console
Have you pulled and rebuilt the latest version of the repository under \Apps\Python3
?
If you get an error message similar to
*** Cannot find GENIE-PYTHON 3 - some things are not likely to work ***
on running config_env.bat
, you need to ensure you have Python 3 available on your system.
Users seems not to get set properly using g.change_users, see ticket 5812. Look into this it is more than a one off.
If you get repeated errors of the form:
2020-11-11T17:20:48 (CMD) (17808) 2020-11-11 17:20:48.374781: Exception in waitfor loop: UnableToConnectToPVException: Unable to connect to PV IN:LARMOR:DAE:GOODUAH: does not exist
2020-11-11T17:20:48 (CMD) (17808) 2020-11-11 17:20:48.512496: Exception cleared
You may need to restart the genie_python session. The root cause of this issue is currently unknown. See ticket 5893 for details, including a script which can scan all instruments for occurrences of this issue. If this issue is seen again, please create a new ticket to investigate further and also link it here.
In one case this was due to the firewall rule for A:\python3\python.exe
had been disabled - a process firewall exception is needed to allow it to receive the UDP name query reply
If you get an error of the form:
Traceback (most recent call last):
File "c:\Jenkins\workspace\System_Tests\test_genie_python_common_imports.py", line 33, in _attempt_to_import_module_by_name
mod = importlib.import_module(module_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Instrument\Apps\Python3\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\__init__.py", line 10, in <module>
from .dsocmd import DSO, Extension, install, build, build_dso, build_ext, bdist_egg
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\dsocmd.py", line 729, in <module>
_needs_builddso(_build, right_before='build_clib')
File "C:\Instrument\Apps\Python3\Lib\site-packages\setuptools_dso\dsocmd.py", line 715, in _needs_builddso
assert issubclass(command, Command)
When trying to import channel access libraries (CaChannel
, pcaspy
, aioca
, p4p
etc), this may be because import pip
has previously been run in the same python session. See https://github.com/pypa/pip/issues/8761 for some details/links. import pip
is not generally supported/recommended by python and is a bad idea - if wanting to install packages dynamically, use subprocess
instead to explicitly spawn a new process which calls pip.
It's also technically possible to replace import pip
with:
import _distutils_hack
_distutils_hack.remove_shim()
import pip
But this is not recommended for obvious reasons.