-
Notifications
You must be signed in to change notification settings - Fork 17
Common issues
Description of the issue:
- The program compiled successfully
- When trying to launch a python file, the message "ModuleNotFoundError: No module named 'plantbox'" was received.
The program compiled for a different python version than the one used to launch the python file. To test:
- Get the python version currently used by running
python3 --version
in the linux command line. - Go to the CPlantBox root folder. You will find two files with the extension ".so". One of them has a name similar to "plantbox.cpython-YYY-x86_64-linux-gnu.so" . Instead of YYY, you will have the version of python for which CPlantBox was built.
- If YYY does not correspond to the python version currently used, this might be causing the error. Solutions: Two solutions are possible:
- Delete the "CPlantBox/CMakeFiles" folder, the CMakeCache.txt file and the two .so files. Then re-compile the CPlantBox program. The compiler should use automatically the python version currently used.
- Create and activate a conda environment where the default python version is the one for which CPlantBox was built.
The python software cannot find the plantbox.cpython-YYY-x86_64-linux-gnu.so file To test:
- go to the folder where the plantbox.cpython-YYY-x86_64-linux-gnu.so is located
- launch python by sending
python3
in the linux command line - try to import plantbox by entering
import plantbox
in the python environment - If the plantbox package is imported without error, it could be that the search paths in the other python file are wrong
Solution:
Add/adapt the python search path in the relevant python file by adding:
import sys
sys.path.append("relative path between the current working directory and the location of the .so file")
The working directory of the program when launching the python file might not be the file location. Check the working directory by running:
import os
print(os.getcwd()) #current working directory
The growth delay of the laterals is represented according to the value of the seed parameter DelayDefinition parameter (either 0, 1, or 2):
- according to the growth rate (r) and the apical distance (la) of the parent organ
- from the growth delay value (ldelay) of the parrent organ
- from the growth delay value (ldelay) of the lateral
Currently the CPlantBox repository is quite heavy, in part because of the history. We will remove unwanted history. in the mean time, you can use git clone --single-branch --depth=1 -b [branch] https://github.com/Plant-Root-Soil-Interactions-Modelling/CPlantBox.git
to have lighter repo locally. it s the cloning method currently implemented in the python install files.
if you want to switch to the <remote_branch_name> branch after the first CPlantBox installation, use:
git remote set-branches origin <remote_branch_name>
git fetch -v --depth=1
git stash
git checkout -b <new_local_branch_name> origin/<remote_branch_name>
git branch -a # check that you are on <new_local_branch_name>
git submodule update --recursive --init
cmake .
make
If you have installed CPlantBox via the python install scripts, the remote repository is saved by git is formated as "https://[...]", which does not allow you to push your branch. You can check if that is the case by running in the CPlantBox root folder:
git remote -v
If you get:
https://github.com/Plant-Root-Soil-Interactions-Modelling/CPlantBox.git
you need to change the format.
Run:
git remote set-url origin [email protected]:Plant-Root-Soil-Interactions-Modelling/CPlantBox.git
You should now be able to push.
If, after using the python install scripts, you get the error message
vtkXOpenGLRenderWindow (0x55b2f1b0cbb0): Cannot create GLX context. Aborting.
when running some of the CPlantBox examples, try the following commands:
sudo apt-get update
sudo apt-get upgrade
sudo apt install mesa-utils libglu1-mesa-dev freeglut3-dev mesa-common-dev
export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=0
to avoid having to run
export DISPLAY=:0
export LIBGL_ALWAYS_INDIRECT=0
For each new WSL session, you can add these commands at the end of either the "/etc/bash.bashrc" or "~/.bashrc" file.
If, when using matplotlib.pyplot (e.g., plt.show(1,1)
), you get the following error message:
Failed to create wl_display (No such file or directory)
qt.qpa.plugin: Could not load the Qt platform plugin "wayland" in "" even though it was found.
It is necessary to change the default backend for matplotlib to tk
:
touch ~/.config/matplotlib/matplotlibrc # creates the files if it does not exist
echo "backend: TkAgg" >> ~/.config/matplotlib/matplotlibrc ## append to the file