Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No module named using sys.path.append

I'm trying import models from my Django project to another project. I found two solutions: first using os.environ['PYTHONPATH'] and second using sys.path.append(). My project structure:

-Project1(Django Project)
 - mysite
     - settings.py
     - ...
  - app1
    - models.py
    - ...

Project2(no Django Project)
  - test
     - dog.py

And in dog.py file:

import sys
import os

sys.path.append("/home/jack/workspace/Project1/mysite")
os.environ['DJANGO_SETTINGS_MODULE'] ="mysite.settings"
from app1 import models

But console show me:

from app1 import models
ImportError: No module named app1
like image 776
user1518451 Avatar asked Mar 21 '26 19:03

user1518451


2 Answers

You seem to be adding path to mysite package, not Project1. But app1 is located in Project1, so Python can't find it.

Try this:

sys.path.append("/home/jack/workspace/Project1")
like image 50
ovgolovin Avatar answered Mar 23 '26 09:03

ovgolovin


From your drawing, app1 is a sibling to mysite—that is, it's in /home/jack/workspace/Project1/app1/, not /home/jack/workspace/Project1/mysite/app1/.

So, sys.path.append("/home/jack/workspace/Project1/mysite") isn't going to do you any good; you need `sys.path.append("/home/jack/workspace/Project1/")'.

like image 33
abarnert Avatar answered Mar 23 '26 07:03

abarnert



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!