0
$\begingroup$

I want to run a python script in Blender via the console, but I split the script into multiple files. The folder consists of two files, "main.py" and "poser.py". I call the main script like this:

blender -b --python E:\Development\Python\BlenderPoser\main.py

But I get the following error when trying to import the "poser.py" file:

Error: Python: Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "E:\Development\Python\BlenderPoser\main.py", line 5, in <module>
    from . import poser
ImportError: attempted relative import with no known parent package

What I get from this is that Blender only imports the main.py file, and ignores all of the rest. How can I tell Blender to also import the rest of the files?

$\endgroup$
3
  • $\begingroup$ If I'm not mistaking, you should write something like from poser import <module name, or class> $\endgroup$ Commented Sep 15, 2022 at 9:12
  • $\begingroup$ Does this help? Having trouble creating an Addon with multiple modules $\endgroup$ Commented Sep 15, 2022 at 9:19
  • $\begingroup$ Using "from poser import Poser" results in the message "ModuleNotFoundError: No module named 'poser'". And I do know how to create a modular plugin, but I would like to create a script without making it a full plugin. $\endgroup$ Commented Sep 15, 2022 at 9:31

1 Answer 1

0
$\begingroup$

I solved it by adding the additional files into a separate folder and adding that folder to the system path:

# Add the folder to the system path, so it can be loaded by the script
main_dir = pathlib.Path(os.path.dirname(__file__)).resolve()
core_dir = os.path.join(main_dir, "core")
sys.path.append(str(core_dir))

After this, I am able to import the poser.py file with import poser

$\endgroup$

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.