Latest (Aug 2017) LimeSDR and GnuRadio

I thought I would start a separate thread here so that folks who were new to the platform would find it without getting lost.

If you want to use your fancy LimeSDR with gnuradio you can but to do that you need the latest sources rather than the ones that might be run by the package maintainers. I’ve just re-rerun these steps on a fresh Ubuntu install to verify they work as I expect them to.

First, this assumes you have no SDR packages installed (no Soapy, no LimeSuite, no UHD, no gnuradio. Nada zip)

Second it is important to realize that there are two abstraction layers, one called Osmosdr and one called Soapysdr. At present there is a SoapySDR driver that works with OsmoSDR so the linkage is:

            LimeSuiteAPI -> Soapy -> Osmocom -> gnuradio

Start this process by installing the python installation tool pip and python-apt

$ sudo apt install pip python-apt

Then upgrade pip to the latest:

$ sudo pip install --upgrade pip

Then use pip to install the gnuradio package manager pybombs.

$ sudo pip install pybombs

Then use pybombs to install the current default recipes

$ pybombs recipes add gr-recipes git+https:://github.com/gnuradio/gr-recipes.git

At this point you can create a directory for your version of gnuradio with this:

$ mkdir prefix
$ pybombs prefix init -a default prefix/default/ -R gnuradio-default 

This will download, and build from source, all of the things you need for gnuradio. It may stop if it finds a problem it can’t overcome, for example on my system I had forgotten to remove the uhd-host package and that version was interfering with the one pybombs wanted to build. But if you have to restart just type

$ pybombs install gnuradio

And it will pick up where it left off. Once it is done and gnuradio is installed you need to add three more things to complete the puzzle

$ pybombs install soapysdr limesuite gr-osmosdr

Now you should be good to go but before you run things you should try some things.

First, there will be a directory called ~/prefix/default in your home directory at this point with gnuradio in it and a bunch of libraries and some python code. There is also a bit of bash shell script called setup_env.sh. Before you start you should use the command:

$ source ~/prefix/default/setup-env.sh

This will set the environment variables LD_LIBRARY_PATH, PATH, and PYTHON_PATH so that you will get the version of the commands that were built together.

You can confirm this with the command which LimeUtil which should return the directory prefix/default/bin off of your home directory. And LimeUtil --info should show your LimeSDR connected, and SoapyUtil --find should find your LimeSDR as well.

If all that works then you can start up gnuradio-companion or run your gnuradio python code and it should find all of the libraries it needs to run. You won’t need any special PPAs or extra packages installed usually, pybombs should do all the work for you.

6 Likes

@ChuckM

THIS is what we need more of on the forum, this kind of tutorials to make the Lime work with other apps. GREAT detail, too. Thanks for posting this…!

73 de Marty, KN0CK

For some reason ‘pip install pybombs’ did not create an executable ‘pybombs’.
I have to use ‘python /usr/local/lib/python2.7/dist-packages/pybombs/main.py …’ as the executable. I could make an alias or a symlink.
There seems to be a ‘setup.py’ that did not get run automatically. This may be a Debian thing.

Hi @Axeman,

Did you run the command pip install pybombs as root? (ie sudo pip install pybombs) ? It doesn’t create an “executable” in the sense of a binary, it is a python script. On my system that was installed in /usr/local/bin/pybombs it does presume you have /usr/local/bin in your path. Can you check to see if that is where it landed?

Another person I talked with had issues with it interfering with Anaconda2 which they had used to install jupyter notebooks. I could not get it to work with Anaconda at all.

–Chuck

Yes, as root. It seems like all it did was install the files. I ran updatedb and locate pybombs and found the location of the main script. I read online about several ways to overcome this and I just used the most direct way.

Great tutorial. I wish there were more like this…trying to piece together all the steps is excruciating.

One nit and one problem:

nit: slight typo in $ pybombs prefix init -a default prefix/default/ -R **gunradio-**default

s/b “gnuradio” but I think no one will really be confused by this.

Now, the problem I’m having.
SoapyUtil --find

returns: SoapyUtil: command not found

The install completed successfully, but seems the executable didn’t make it where it was supposed to go. Any tips?

Anyone got anything similar for CentOS or Fedora?
I hate using Ubuntu.

This just uses Python tools, so shouldn’t be distro-specific. Give it a try and let us know how it goes.

It went pretty well until the above part where it failed out on sqlite having no install method.

Sqlite is already on the system.

Thanks @opie I fixed the typo. Once you’ve run it you need to source ‘setupenv.sh’ into your environment and it will add the prefix/default/bin directory to your path and the libraries to your LD_LIBRARY path as well.

–Chuck

Hi @M0GLO

For CentOS or Fedora you just need to install the rpm with Python and pip first. Then you can use pip to install Pybombs and go from there.

Got that far, it is just bombing out on the Sqlite thing where it is already installed.
I take I have to uninstall Sqlite then and give it another go eh?

Been too busy with Ansible and building some Openstacks to get back at it again.
I’ll give it another run as soon as I have my main work done so I can play again.

Thanks, it got my limesdr working on GNU Radio using the prefix directory :slight_smile:

First off, thanks for taking the time to do this.

Second, I’m having a similar issue as M0GLO – when I type:

$ pybombs install soapysdr limesuite gr-osmosdr

I get the following:

jason@jason-N56VM:~$ pybombs install soapysdr limesuite gr-osmosdr
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
PyBOMBS.install_manager - ERROR - Package has no install method: soapysdr

If I try to install the programs separately I get the same for limesuite:

jason@jason-N56VM:~$ pybombs install limesuite
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
PyBOMBS.install_manager - ERROR - Package has no install method: limesuite

And for gr-osmosdr, I get something completely different:

jason@jason-N56VM:~$ pybombs install gr-osmosdr
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
Traceback (most recent call last):
File “/usr/local/bin/pybombs”, line 11, in
load_entry_point(‘PyBOMBS==2.3.2’, ‘console_scripts’, ‘pybombs’)()
File “/usr/local/lib/python2.7/dist-packages/pybombs/main.py”, line 32, in main
return dispatch() or 0
File “/usr/local/lib/python2.7/dist-packages/pybombs/commands/base.py”, line 194, in dispatch
return get_cmd_dict(cmd_list)[args.command](cmd=args.command, args=args).run()
File “/usr/local/lib/python2.7/dist-packages/pybombs/commands/install.py”, line 122, in run
static=getattr(self.args, ‘static’, False),
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 112, in install
lambda pkg: _cached_check_if_pkg_goes_into_tree(pkg, _check_if_pkg_goes_into_tree)
File “/usr/local/lib/python2.7/dist-packages/pybombs/dep_manager.py”, line 53, in make_dep_tree
pkg_set = set([pkg for pkg in pkg_list if filter_callback(pkg)])
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 112, in
lambda pkg: _cached_check_if_pkg_goes_into_tree(pkg, _check_if_pkg_goes_into_tree)
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 97, in _cached_check_if_pkg_goes_into_tree
ret_val = check_callback(pkg)
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 63, in _check_if_pkg_goes_into_tree
if not self.pm.exists(pkg):
File “/usr/local/lib/python2.7/dist-packages/pybombs/package_manager.py”, line 134, in exists
pkg_version = pkgr.exists(r)
AttributeError: ‘NoneType’ object has no attribute ‘exists’

I’m running a fresh install of Xubuntu 17.04 AMD64.

Thanks!

This suggests that you have an out of date recipes file. The current repository is here: https://github.com/gnuradio/gr-recipes.

You can update to the latest recipes by doing:
pybombs recipes add gr-recipes git+https:://github.com/gnuradio/gr-recipes.git

–Chuck

1 Like

When I enter that I get the following:

jason@jason-N56VM:~$ sudo pybombs recipes add gr-recipes git+https:://github.com/gnuradio/gr-recipes.git
[sudo] password for jason:
PyBOMBS - INFO - PyBOMBS Version 2.3.2
Alias `gr-recipes’ already exists, overwrite Y/[N]? Y
PyBOMBS.recipes - WARNING - Cache dir /home/jason/.pybombs/recipes/gr-recipes for remote recipe location gr-recipes already exists! Deleting.
Cloning: (100%) [=========================================================]
PyBOMBS.recipes - ERROR - Could not fetch recipes: Process returned value: 128

If I try it with a single colon instead of two colons between “https” and “//github…”, it gives me this:

jason@jason-N56VM:~$ sudo pybombs recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.RecipeListManager - ERROR - ‘/home/jason/.pybombs/recipes/gr-recipes’ is not a directory.
Alias `gr-recipes’ already exists, overwrite Y/[N]? Y
Cloning: (100%) [=========================================================]

And then still gives me the “no install method” error.

Again, thanks for the help!

Jason

Odd, a couple of things though.

Once you have installed pybombs, you don’t need to run it as root (no sudo required) what pybombs is doing is installing a full set of binaries and libraries under the path ../prefix/default so that you can run the code without forcing the system to change. This has the advantage that you can run two difference versions of gnuradio (for example) by making a different prefix like prefix/gnuradio-newdev. The file setup-env.sh that is created in the top level directory sets up paths (library and executable) to make this magic work. If your home directory is mounted via NFS you can have issues that root can’t write to it but I don’t think that is the case here.

The recipes are pretty simple for example this is the limesuite one:

#

category: baseline
depends:
- soapysdr
- libusb
- sqlite
description: Lime suite device drivers, GUI, and SDR support
gitbranch: master
inherit: cmake
# Let's always build this from source, not binaries
source: git+git://github.com/myriadrf/LimeSuite.git
vars:
  config_opt: " -DENABLE_GUI=OFF -DENABLE_SOAPY_LMS7=ON -DENABLE_STREAM=ON "

What is strange is that the recipes tell pybombs to build from source, but your transcript suggests that it is trying to install from binary packages. That is a deeper problem in pybombs getting confused about what it is supposed to do.

–Chuck

1 Like

This is the contents of my setup_env.sh if it helps:

WARNING: This file is auto-generated by pybombs, any manual changes to it may be overwritten!

export PATH=“/home/jason/prefix/default/bin:$PATH”
export PYTHONPATH=“/home/jason/prefix/default/python:/home/jason/prefix/default/lib/python2.6/site-packages:/home/jason/prefix/default/lib64/python2.6/site-packages:/home/jason/prefix/default/lib/python2.6/dist-packages:/home/jason/prefix/default/lib64/python2.6/dist-packages:/home/jason/prefix/default/lib/python2.7/site-packages:/home/jason/prefix/default/lib64/python2.7/site-packages:/home/jason/prefix/default/lib/python2.7/dist-packages:/home/jason/prefix/default/lib64/python2.7/dist-packages:$PYTHONPATH”
export LD_LIBRARY_PATH=“/home/jason/prefix/default/lib:/home/jason/prefix/default/lib64/:$LD_LIBRARY_PATH”
export LIBRARY_PATH=“/home/jason/prefix/default/lib:/home/jason/prefix/default/lib64/:$LIBRARY_PATH”
export PKG_CONFIG_PATH=“/home/jason/prefix/default/lib/pkgconfig:/home/jason/prefix/default/lib64/pkgconfig:$PKG_CONFIG_PATH”
export PYBOMBS_PREFIX=“/home/jason/prefix/default”

If we’re in a Python virtualenv, activate that

if [ -r /home/jason/prefix/default/bin/activate ]; then
source /home/jason/prefix/default/bin/activate
fi

Tried something I found while searching

sudo pybombs -vv recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git

I know you said I don’t need to sudo, but it would terminate with a permissions error when I didn’t.

This was the output:

jason@jason-N56VM:~$ sudo pybombs -vv recipes add gr-recipes git+https://github.com/gnuradio/gr-recipes.git
PyBOMBS.ConfigManager - DEBUG - Reading config info from file: /etc/pybombs/config.yml
PyBOMBS.ConfigManager - DEBUG - New config items: {}
PyBOMBS.ConfigManager - DEBUG - Reading config info from file: /home/jason/.pybombs/config.yml
PyBOMBS.ConfigManager - DEBUG - New config items: {}
PyBOMBS.ConfigManager - DEBUG - Template directory: /usr/local/lib/python2.7/dist-packages/pybombs/templates
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Inspecting config file: /etc/pybombs/config.yml
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Inspecting config file: /home/jason/.pybombs/config.yml
PyBOMBS.ConfigManager.PrefixInfo - DEBUG - Cannot establish a prefix directory. This may cause issues down the line.
PyBOMBS.ConfigManager - DEBUG - Full list of recipe locations: [‘/home/jason/.pybombs/recipes/gr-recipes’, ‘/usr/local/lib/python2.7/dist-packages/pybombs/recipes’]
PyBOMBS.ConfigManager - DEBUG - Named recipe locations: {‘gr-recipes’: ‘git+https://github.com/gnuradio/gr-recipes.git’}
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.RecipeListManager - DEBUG - Adding recipe location: /home/jason/.pybombs/recipes/gr-recipes
PyBOMBS.RecipeListManager - ERROR - ‘/home/jason/.pybombs/recipes/gr-recipes’ is not a directory.
PyBOMBS.RecipeListManager - DEBUG - Adding recipe location: /usr/local/lib/python2.7/dist-packages/pybombs/recipes
PyBOMBS.RecipeListManager - DEBUG - Scanning directory ‘/usr/local/lib/python2.7/dist-packages/pybombs/recipes’ for recipes…
PyBOMBS.RecipeListManager - DEBUG - Found 11 new recipes.
PyBOMBS.RecipeListManager - DEBUG - Loading templates.
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/boostflags.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/prefix.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/setuptools.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/sdk.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/distutils.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/bjam.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/cmake.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/autoconf.lwt
PyBOMBS.RecipeListManager - OBNOXIOUS - Adding template /usr/local/lib/python2.7/dist-packages/pybombs/templates/bootstrapautoconf.lwt
PyBOMBS.recipes - DEBUG - Initializing command class for command recipes
PyBOMBS.recipes - DEBUG - Preparing to add recipe location gr-recipes → git+https://github.com/gnuradio/gr-recipes.git
Alias gr-recipes' already exists, overwrite Y/[N]? Y PyBOMBS.recipes - DEBUG - Storing new recipe location to /home/jason/.pybombs/config.yml PyBOMBS.recipes - DEBUG - Fetching into directory: /home/jason/.pybombs/recipes/gr-recipes PyBOMBS.Fetcher - DEBUG - Getting fetcher for https://github.com/gnuradio/gr-recipes.git, type git PyBOMBS.Fetcher - DEBUG - Using fetcher <pybombs.fetchers.git.Git object at 0x7f025fc814d0> PyBOMBS.Fetcher.git - DEBUG - Requiring packages on host system: ['git'] PyBOMBS.PackageManager - DEBUG - No prefix specified. Skipping source package manager. PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pip PyBOMBS.PackageManager - DEBUG - pip is supported! PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager apt PyBOMBS.PackageManager - DEBUG - apt is supported! PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager yumdnf PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager port PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager brew PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager zypper PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pacman PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager portage PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pymod PyBOMBS.PackageManager - DEBUG - pymod is supported! PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager pkgconfig PyBOMBS.PackageManager - DEBUG - pkgconfig is supported! PyBOMBS.PackageManager - DEBUG - Attempting to add binary package manager cmd PyBOMBS.PackageManager - DEBUG - cmd is supported! PyBOMBS.PackageManager - DEBUG - Using binary packagers: ['pip', 'apt', 'pymod', 'pkgconfig', 'cmd'] PyBOMBS.install_manager - DEBUG - Phase 1: Creating install tree and installing binary packages: PyBOMBS.install_manager - OBNOXIOUS - Checking if package git’ goes into tree…
PyBOMBS.PackageManager - DEBUG - Checking if package git is installable…
PyBOMBS.Recipe[git] - OBNOXIOUS - Loading recipe file: /usr/local/lib/python2.7/dist-packages/pybombs/recipes/git.lwr
PyBOMBS.Recipe[git] - OBNOXIOUS - Loading template file: /usr/local/lib/python2.7/dist-packages/pybombs/templates/autoconf.lwt
PyBOMBS.Recipe[git] - OBNOXIOUS - Inheriting from file /usr/local/lib/python2.7/dist-packages/pybombs/templates/autoconf.lwt
PyBOMBS.Recipe[git] - OBNOXIOUS - Loading template file: /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.Recipe[git] - OBNOXIOUS - Inheriting from file /usr/local/lib/python2.7/dist-packages/pybombs/templates/empty.lwt
PyBOMBS.Recipe[git] - OBNOXIOUS - Loaded recipe - git
PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one’s already cached (git)
PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one’s already cached (git)
PyBOMBS.Packager.pip - OBNOXIOUS - exists(git)
PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string.
PyBOMBS.Packager.apt - OBNOXIOUS - exists(git)
PyBOMBS.ReqScanner - OBNOXIOUS - Adding package with name git-core
PyBOMBS.ReqScanner - OBNOXIOUS - Found package combiner ||
PyBOMBS.ReqScanner - OBNOXIOUS - Adding package with name git
PyBOMBS.ReqScanner - OBNOXIOUS - End of requirements list
PyBOMBS.ReqScanner - OBNOXIOUS - Done parsing requirements string git-core || git
PyBOMBS.Packager.apt - OBNOXIOUS - Calling ev for recursive satisfier rule evaluation
PyBOMBS.Packager.apt - OBNOXIOUS - Checking apt for git-core' PyBOMBS.Packager.apt - DEBUG - Package git-core has version 2.11.0 in repositories PyBOMBS.PackageManager - DEBUG - Checking if package git is installed... PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one's already cached (git) PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one's already cached (git) PyBOMBS.get_recipe - OBNOXIOUS - Woohoo, this one's already cached (git) PyBOMBS.Packager.pip - OBNOXIOUS - Checking if recipe git is installed PyBOMBS.ReqScanner - OBNOXIOUS - Empty requirements string. PyBOMBS.Packager.apt - OBNOXIOUS - Checking if recipe git is installed PyBOMBS.ReqScanner - OBNOXIOUS - Adding package with name git-core PyBOMBS.ReqScanner - OBNOXIOUS - Found package combiner || PyBOMBS.ReqScanner - OBNOXIOUS - Adding package with name git PyBOMBS.ReqScanner - OBNOXIOUS - End of requirements list PyBOMBS.ReqScanner - OBNOXIOUS - Done parsing requirements string git-core || gitPyBOMBS.Packager.apt - OBNOXIOUS - Calling ev for recursive satisfier rule evaluation PyBOMBS.Packager.apt - DEBUG - Package git-core has version 2.11.0 installed PyBOMBS.install_manager - OBNOXIOUS - Installed, but no update requested. Does not go into tree. PyBOMBS.install_manager - DEBUG - Phase 2: Recursively installing source packages to prefix: PyBOMBS.Fetcher.git - DEBUG - Requirements met. PyBOMBS.Fetcher.git - DEBUG - Using url - https://github.com/gnuradio/gr-recipes.git PyBOMBS._process_thread() - DEBUG - Executing commandgit clone GitHub - gnuradio/gr-recipes: Main GNU Radio recipe repository for use with PyBOMBS gr-recipes’
Cloning into ‘gr-recipes’…
remote: Counting objects: 1369, done.
remote: Total 1369 (delta 0), reused 0 (delta 0), pack-reused 1369
Receiving objects: 100% (1369/1369), 248.01 KiB | 0 bytes/s, done.
Resolving deltas: 100% (1163/1163), done.
PyBOMBS.monitor_process() - DEBUG - Thread signaled termination or returned
PyBOMBS.monitor_process() - DEBUG - Return value: 0
PyBOMBS.ConfigManager - OBNOXIOUS - Updating file /home/jason/.pybombs/config.yml with new data: {‘recipes’: {‘gr-recipes’: ‘git+https://github.com/gnuradio/gr-recipes.git’}}

Followed by more:

jason@jason-N56VM:~$ pybombs install soapysdr
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
PyBOMBS.install_manager - ERROR - Package has no install method: soapysdr

That said, there’s a bunch of .lwr files in my home/jason/.pybombs/recipes/gr-recipes/ folder that weren’t there before, including “soapysdr.lwr”, “limesuite.lwr”, and “gr-osmosdr.lwr”, so I think I might be on the right path.

Thanks for the patience and the help.

Edit to add – this is different:

jason@jason-N56VM:~$ pybombs install gr-osmosdr
PyBOMBS - INFO - PyBOMBS Version 2.3.2
PyBOMBS.install_manager - INFO - Phase 1: Creating install tree and installing binary packages:
Traceback (most recent call last):
File “/usr/local/bin/pybombs”, line 11, in
load_entry_point(‘PyBOMBS==2.3.2’, ‘console_scripts’, ‘pybombs’)()
File “/usr/local/lib/python2.7/dist-packages/pybombs/main.py”, line 32, in main
return dispatch() or 0
File “/usr/local/lib/python2.7/dist-packages/pybombs/commands/base.py”, line 194, in dispatch
return get_cmd_dict(cmd_list)[args.command](cmd=args.command, args=args).run()
File “/usr/local/lib/python2.7/dist-packages/pybombs/commands/install.py”, line 122, in run
static=getattr(self.args, ‘static’, False),
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 112, in install
lambda pkg: _cached_check_if_pkg_goes_into_tree(pkg, _check_if_pkg_goes_into_tree)
File “/usr/local/lib/python2.7/dist-packages/pybombs/dep_manager.py”, line 53, in make_dep_tree
pkg_set = set([pkg for pkg in pkg_list if filter_callback(pkg)])
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 112, in
lambda pkg: _cached_check_if_pkg_goes_into_tree(pkg, _check_if_pkg_goes_into_tree)
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 97, in _cached_check_if_pkg_goes_into_tree
ret_val = check_callback(pkg)
File “/usr/local/lib/python2.7/dist-packages/pybombs/install_manager.py”, line 63, in _check_if_pkg_goes_into_tree
if not self.pm.exists(pkg):
File “/usr/local/lib/python2.7/dist-packages/pybombs/package_manager.py”, line 134, in exists
pkg_version = pkgr.exists(r)
AttributeError: ‘NoneType’ object has no attribute ‘exists’

Hi @mr0w1 can you remind me what OS and version of that OS you are using ?