Geant4Py install error

I’m trying to install python modules, but I get this error while configuring:

$ cd /home/user/geant4/geant4.10.06.p03/environments/g4py
$ export GEANT4_INSTALL=/home/user/geant4/geant4.10.06.p03-install/
$ mkdir build && cd build
$ cmake ..

CMake Error at G4PythonHelpers.cmake:15 (file):
file RELATIVE_PATH must be passed a full path to the file:
Call Stack (most recent call first):
CMakeLists.txt:14 (include)

CMake Error at CMakeLists.txt:23 (geant4_add_feature):
Unknown CMake command “geant4_add_feature”.

I follow this steps to install Geant4:

$ mkdir geant4 && cd geant4
$ wget -nc http://geant4-data.web.cern.ch/geant4-data/releases/geant4.10.06.p03.tar.gz
$ tar -xvf geant4.10.06.p03.tar.gz
$ cd ..
$ mkdir geant4.10.06.p03-build && cd geant4.10.06.p03-build
$ cmake -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_BUILD_TLS_MODEL=global-dynamic -DGEANT4_USE_PYTHON=ON -DGEANT4_USE_SYSTEM_EXPAT=OFF -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_INSTALL_DATA=ON -DCMAKE_INSTALL_PREFIX=/home/user/geant4/geant4.10.06.p03-install /home/user/geant4/geant4.10.06.p03
$ make -j4
$ make install

Thanks in advance for your help!

There’s no longer a need to build Geant4Py separately, the install you made with:

$ cmake -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_BUILD_TLS_MODEL=global-dynamic -DGEANT4_USE_PYTHON=ON -DGEANT4_USE_SYSTEM_EXPAT=OFF -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_INSTALL_DATA=ON -DCMAKE_INSTALL_PREFIX=/home/user/geant4/geant4.10.06.p03-install /home/user/geant4/geant4.10.06.p03
$ make -j4
$ make install

should have built and installed the modules under /home/user/geant4/geant4.10.06.p03-install/lib64/python3.X/site-packages. The lib64 might be lib depending on your exact platform, and X be be for the minor version of python on your system, but the modules should be present!

Thank you for your reply.

As you mentioned, the module Geant4 is present in “/home/user/geant4/geant4.10.06.p03-install/lib/python3.8/site-packages/Geant4”
If I understood correctly, I don’t need to compile g4py again in a build directory like in older versions. But how can I compile and install g4py modules such as NISTmaterials, MedicalBeam …

These modules are now only built as part of the testing procedure. Adding first class examples for Geant4Py as for the C++ libraries is on the todo lost, but other requirements, features and testing for 10.7 is taking all the time at the moment.

Also, a higher priority item for Geant4Py maintenance and support will be migration to pybind11 (which will also significantly change both these tests and the new examples).

Hello,

With the new version (10.07) I still cannot compile any Geant4Py example due to the g4py modules which are not available, is there a solution to fix this problem ?

Thanks!

Maybe it is in the g4py/tests/g4pytest.

I wanted to bring this topic up again. I was able to install most of Geant4Py correctly, but not all of it. For example, using the answer given here, I am missing the following gdml package. Everything else appears to have installed correctly.

I wanted to answer my own question. I found in CMakeLists.txt that

if(GEANT4_USE_GDML)
  add_subdirectory(gdml)
endif()

so I recompiled with cmake -DGEANT4_USE_GDML=ON and it appears to have worked.

@bmorgan have you had an issue with gdml in geant4py? I am now getting the error:

Traceback (most recent call last):                                                                                        
File "<string>", line 1, in <module>                                                                                    
File "/home/glicka/anaconda3/lib/python3.8/site-packages/Geant4/__init__.py", line 32, in <module> 
from .G4gdml import *                                                                                               
ImportError: /home/glicka/anaconda3/lib/python3.8/site-packages/Geant4/G4gdml.so: undefined symbol: _ZN12G4GDMLParser13ImportRegionsEv                                                                       

which I get when I add

from .G4gdml import *

to the __init__.py file.

EDIT: I reinstalled everything from scratch and the import error went away. I still had to add the import statement though.