1
votes

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
2
I would just add app 1 to your sys path, then import models. - debianplebian

2 Answers

4
votes

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")
2
votes

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/")'.