LookupError: You must have test.fm >= 1.0.4 installed before

What does that mean?
I was following install instructions on page GitHub - frappe/bench: CLI to manage Multi-tenant deployments for Frappe apps
everything goes fine until I run “bench get-app erpnext GitHub - frappe/erpnext: Free and Open Source Enterprise Resource Planning (ERP)
In last step “./env/bin/pip install -q -e ./apps/erpnext”, it reports this error:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-lsyylC/frappe/setup.py", line 10, in <module>
    raise LookupError("You must have test.fm >= 1.0.4 installed before (https://github.com/grafos-ml/frappe)")
LookupError: You must have test.fm >= 1.0.4 installed before (https://github.com/grafos-ml/frappe)

I searched in this forum and it seems this grafos-ml/frappe should not be used but I have no idea there is another frappe before I do the installation and no chance I’ll install that frappe.
Please help.

when I rerun with:
“bench shell”
“./env/bin/pip install -q -e ./apps/erpnext”
erpnext is installed.
But when I try “/usr/local/bin/bench new-site site1” it fails with following error:
INFO:bench.utils:creating new site site1.local
frappe app is not installed. Run the following command to install frappe
bench get-app GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript
/bin/sh: 1: /home/yu/git/frappe-bench/env/bin/frappe: not found
Traceback (most recent call last):
File “/usr/local/bin/bench”, line 9, in
load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()
File “/home/yu/git/bench-repo/bench/cli.py”, line 40, in cli
bench_command()
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 664, in call
return self.main(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 644, in main
rv = self.invoke(ctx)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 837, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 464, in invoke
return callback(*args, **kwargs)
File “/home/yu/git/bench-repo/bench/commands/make.py”, line 56, in new_site
new_site(site, mariadb_root_password=mariadb_root_password, admin_password=admin_password)
File “/home/yu/git/bench-repo/bench/utils.py”, line 150, in new_site
), cwd=os.path.join(bench_path, ‘sites’))
File “/home/yu/git/bench-repo/bench/utils.py”, line 127, in exec_cmd
raise CommandFailedError(cmd)
"

Do I need to install bench in frappe-bench/ directory? I used “/usr/local/bin/bench” since it reports no “./env/bin/bench” when I type bench directly.

This is a completely different library that will conflict with your setup. Please remove that from your global environment and re-run the command

Thanks for comment. But I don’t have that “grafos-ml/frappe” installed. I’ve searched in my global python directory and nothing.
And now the problem shows up when I type “bench new-site site1”
Trace back:
"
INFO:bench.utils:creating new site site1
frappe app is not installed. Run the following command to install frappe
bench get-app GitHub - frappe/frappe: Low code web framework for real world applications, in Python and Javascript
/bin/sh: 1: /home/yu/git/frappe-bench/env/bin/frappe: not found
Traceback (most recent call last):
File “/usr/local/bin/bench”, line 9, in
load_entry_point(‘bench’, ‘console_scripts’, ‘bench’)()
File “/home/yu/git/bench-repo/bench/cli.py”, line 40, in cli
bench_command()
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 664, in call
return self.main(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 644, in main
rv = self.invoke(ctx)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 991, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 837, in invoke
return ctx.invoke(self.callback, **ctx.params)
File “/usr/local/lib/python2.7/dist-packages/click-4.0-py2.7.egg/click/core.py”, line 464, in invoke
return callback(*args, **kwargs)
File “/home/yu/git/bench-repo/bench/commands/make.py”, line 56, in new_site
new_site(site, mariadb_root_password=mariadb_root_password, admin_password=admin_password)
File “/home/yu/git/bench-repo/bench/utils.py”, line 150, in new_site
), cwd=os.path.join(bench_path, ‘sites’))
File “/home/yu/git/bench-repo/bench/utils.py”, line 127, in exec_cmd
raise CommandFailedError(cmd)
bench.utils.CommandFailedError: /home/yu/git/frappe-bench/env/bin/frappe site1 --install 8e62d73f72
"
I have searched in the forum and it seems this is a general problem… But any suggestion I could try.

Now I’m out of solution and I’ll try to borrow a clean linux machine and use the image build instead.

In bench-repo/bench/utils.py:150
"
def new_site(site, mariadb_root_password=None, admin_password=None, bench_path=‘.’):

exec_cmd(“{frappe} {site} --install {db_name} {mariadb_root_password_fragment} {admin_password_fragment}”.format(
frappe=get_frappe(bench_path=bench_path),
site=site,
db_name = hashlib.sha1(site).hexdigest()[:10],
mariadb_root_password_fragment=mariadb_root_password_fragment,
admin_password_fragment=admin_password_fragment
), cwd=os.path.join(bench_path, ‘sites’))

"
It seems I should have “frappe-bench/evn/bin/frappe” binary after I install frappe correctly?
But when I run “./env/bin/pip install -e ./apps/frappe” manually, it reports successful and no “frappe” binary generated. Do I need to do anything additional?

Bench will install its own virtualenv, my guess is that the grafos-ml/frappe has been installed in your virtualenv in your frappe-bench folder

No. I have searched frappe-bench folder too. No “grafos-ml” or anything close found.
"
$ ~/git/frappe-bench $ grep -r grafos-ml *
$ ~/git/frappe-bench $
"
Actually I installed frappe from the apps/frappe with “pip install -e ./apps/frappe”. And in this dir, it clearly says it’s from frappe/frappe.

I understand bench will install its own virtualenv and this is why I found two apps: frappe and erpnext are under apps/ dir and all python related stuffs under env/bin.
And it seems bench will also look for “frappe-bench/env/bin/frappe” binary which is missing. Do you have any other command to make this frappe binary built?

There is no binary in Python. bench get-app will “install” it in your virtualenv - that should be it.

Thanks for the confirm.
I’ll try to rerun “bench get-app” command to see if works with a clean install

I cleaned up everything and it works now. Thanks for the help especially the confirm that env/bin/frappe should not be the problem. I was reading that Python code and it seems frappe will be called like a binary.

After a clean reinstall with unnecessary env variables removed, I can finish till “bench start” but still see some strange error when I visit localhost:8000.
Will need to debug further and ask for help if can’t resolve :slight_smile:
Thanks again.

Sorry to bother again. I can now start server but somehow whenever I access it, an exception is thrown at:

File “/home/yu/git/frappe-bench/apps/frappe/frappe/init.py”, line 185, in get_site_config
21:12:25 web.1 | sys.exit(1)
21:12:25 web.1 | SystemExit: 1

My debug shows that “siteconfig=./10.0.0.9/site_config.json”. Here “10.0.0.9” is my local address so it seems it’s not routing correctly?
Possibly missed some thing during installation?

Never mind. Solved this by playing with mariadb access control.