[Rivet] Rivet issue with PYTHONPATH variable

Maksym Deliyergiyev maksym.deliyergiyev at outlook.com
Mon Sep 28 12:39:41 BST 2015


Hi Andy,

> All Rivet should require in PYTHONPATH is the path to the directory (or 
> directories) containing the rivet and yoda Python modules. These modules 

It seems that Rivet was build properly according to the "rivet-config" dump:
------------------------------------------
[root at maksym bin]# ./rivet-config --pythonpath --libs --libdir --includedir
/opt/Rivet/include  /opt/Rivet/lib / opt/Rivet/lib64/python2.7/site-packages   -lRivet
------------------------------------------

Nevertheless, with your advice in mind I removed the PYTHON  and  the Python3 from the setup of the environment variables.
But once I tried to run Rivet it starts complaining:
[root at maksym bin]# ./rivet --help
The rivet Python module could not be loaded: is your PYTHONPATH set correctly?

So, afterwards I even tried to copy the Rivet folder with python modules to the system path
/usr/lib/python2.7/site-packages/
/usr/lib64/python2.7/site-packages/

And again I got the same message that PYTHONPATH does not set correctly. In addition, if I will run another Rivet executable file it starts complaining that rivet module does not exist.
---------------------------------
[root at maksym bin]# ./rivet-which 
Traceback (most recent call last):
  File "./rivet-which", line 13, in <module>
    import rivet, sys, os
ImportError: No module named rivet
---------------------------------


Do you have any ideas how to make it work? BTW, the Rivet installation was configured in the following way:
---------------------------------
[blessed at maksym Rivet-2.2.1]$ ./configure --prefix=/opt/Rivet  --exec-prefix=/opt/Rivet   --with-yoda=/opt/YODA --with-yoda-libpath=/opt/YODA/lib   --with-yoda-incpath=/opt/YODA/include  --with-hepmc=/opt/HEPMC2  --with-hepmc-libpath=/opt/HEPMC2/lib   --with-hepmc-incpath=/opt/HEPMC2/include   --with-fastjet=/opt/FastJet   --with-fastjet-libpath=/opt/FastJet/lib   --with-fastjet-incpath=/opt/FastJet/include  --with-gsl-incpath=/usr/local/include/gsl  PYTHON=/bin/python

checking for python... /bin/python
checking whether /bin/python version >= 2.5... yes
checking for Python include path... /usr/include/python2.7
configure: All Python build checks successful: 'yoda' Python extension will be built
checking if the /usr/bin/g++ compiler accepts the -Wno-unused-but-set-variable flag... yes
checking if the /usr/bin/g++ compiler accepts the -Wno-sign-compare flag... yes
checking for python version... 2.7
checking for python platform... linux2
checking for python script directory... ${prefix}/lib/python2.7/site-packages
checking for python extension module directory... ${exec_prefix}/lib64/python2.7/site-packages
checking for Cython >= 0.18... yes
configure: Cython >= 0.18 found: Python extension source can be rebuilt (for developers)
configure: All Python build checks successful: 'rivet' Python extension will be built
---------------------------------




Best regards,
Max








> Subject: Re: [Rivet] Rivet issue with PYTHONPATH variable
> To: maksym.deliyergiyev at outlook.com; rivet at projects.hepforge.org
> From: andy.buckley at cern.ch
> Date: Mon, 28 Sep 2015 10:54:59 +0100
> 
> Hi Max,
> 
> I'm not sure what you are trying to do. Those paths look like 
> system-level Python paths, which should be automatically searched by the 
> active Python executable. In addition it doesn't make sense to have 
> Python search module directories both for Python3 (which Rivet doesn't 
> yet support) and Python2 -- you are either using one or the other!
> 
> Your method 1 is setting a PYTHON variable as well as PYTHONPATH. I 
> don't know if that has any effect, but note that $PYTHON is often used 
> to refer to the python executable itself, so this could cause problems.
> 
> Your method 2 implies some confusion over what rivet-config does: it 
> just prints paths and config flags according to what was used to build 
> and install Rivet, to help with consistency when building plugin modules 
> or linking other codes against libRivet. It does not *set* the 
> environment -- no executable can do that, because they can only modify 
> the subshell that they execute in, which disappears when the program 
> finishes.
> 
> All Rivet should require in PYTHONPATH is the path to the directory (or 
> directories) containing the rivet and yoda Python modules. These modules 
> are actually directories, which contain files like __init__.py, other 
> *.py files, and the C extensions which both cases are called core.so. I 
> usually install into my home directory, and hence need to set 
> PYTHONPATH; if you have installed into system paths like /usr or 
> /usr/local then I suspect you should not need to set anything because 
> e.g. /usr/lib64/pythonX.Y/site-packages should already be in the Python 
> X.Y default search path.
> 
> Andy
> 
> 
> On 28/09/15 10:38, Maksym Deliyergiyev wrote:
> > Dear Rivet developers,
> >
> > Could you please explain me how one should have to configure the
> > PYTHONPATH in order to force the Rivet application to work? I have tried
> > to setup this environment variable in several ways, but it seems the
> > Rivet still do not recognized it. The most weird thing that during the
> > configuration procedure the python is always found in the right place.
> >
> > Method 1:
> > ---------------------------------------------
> > export PYTHONPATH=$PYTHONPATH:/usr/lib/python2.7/site-packages
> > export PYTHONPATH=$PYTHONPATH:/usr/lib/python3.4/site-packages
> > export PYTHONPATH=$PYTHONPATH:/usr/lib64/python2.7/site-packages
> > export PYTHONPATH=$PYTHONPATH:/usr/lib64/python3.4/site-packages
> > export PYTHONPATH=$PYTHONPATH:/usr/local/include/python3.4m
> > export PYTHONPATH=$PYTHONPATH:/usr/include/python2.74
> > export PYTHONPATH=$PYTHONPATH:/bin/python
> >
> >
> > export PYTHON=$PYTHON:/usr/lib/python2.7/site-packages
> > export PYTHON=$PYTHON:/usr/lib/python3.4/site-packages
> > export PYTHON=$PYTHON:/usr/lib64/python2.7/site-packages
> > export PYTHON=$PYTHON:/usr/lib64/python3.4/site-packages
> > export PYTHON=$PYTHON:/usr/local/include/python3.4m
> > export PYTHON=$PYTHON:/usr/include/python2.74
> > export PYTHON=$PYTHON:/bin/python
> > ---------------------------------------------
> >
> >
> > Method 2:
> > ---------------------------------------------
> > ./rivet-config --pythonpath=/usr/include/python3.4m
> > --libs=/usr/lib64/python3.4/site-packages  --libdir=/opt/Rivet/lib
> > --includedir=/opt/Rivet/include
> > ---------------------------------------------
> >
> >
> > Method 3:
> > ---------------------------------------------
> > import os, sys
> >
> > ## Load the rivet module
> > try:
> >      import rivet
> > except:
> >      ## If rivet loading failed, try to bootstrap the Python path!
> >      try:
> >          # TODO: Is this a good idea? Maybe just notify the user that
> > their PYTHONPATH is wrong?
> >          import commands
> >          ...
> >          ...
> >          ...
> >          sys.path.append('/usr/lib/python2.7/site-packages')
> >          sys.path.append('/usr/lib/python3.4/site-packages')
> >          sys.path.append('/usr/lib64/python2.7/site-packages')
> >          sys.path.append('/usr/lib64/python3.4/site-packages')
> >          sys.path.append('/usr/local/include/python3.4m')
> >          sys.path.append('/usr/include/python2.74')
> >          sys.path.append('/usr/include/python3.4m')
> >          sys.path.append('/opt/Rivet/lib64/python2.7/site-packages')
> >          sys.path.append('/bin/python')
> >          import rivet
> >      except:
> >          sys.stderr.write("The rivet Python module could not be loaded:
> > is your PYTHONPATH set correctly?\n")
> >          sys.exit(1)
> > ---------------------------------------------
> >
> >
> >
> >
> >
> > Thanks in advance,
> > Max
> >
> >
> > _______________________________________________
> > Rivet mailing list
> > Rivet at projects.hepforge.org
> > https://www.hepforge.org/lists/listinfo/rivet
> >
> 
> 
> -- 
> Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
> Particle Physics Expt Group, University of Glasgow
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.hepforge.org/lists-archive/rivet/attachments/20150928/91ff7862/attachment.html>


More information about the Rivet mailing list