I am trying to call a function from a python file that is located outside the django project directory from views.py. I have tried importing the python file but running the django server says "no module named xxxx".
Tree structure is given below.
├── auto_flash
│ ├── __init__.py
│ └── test.py
└── fireflash
├── detection_reports
│ ├── admin.py
│ ├── admin.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── __pycache__
│ │ └── __init__.cpython-35.pyc
│ ├── templates
│ │ └── detection_reports
│ │ └── home.html
│ ├── tests.py
│ ├── views.py
│ └── views.pyc
├── fireflash
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── __pycache__
│ │ ├── __init__.cpython-35.pyc
│ │ └── settings.cpython-35.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── ui_cgi.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── __init__.py
└── manage.py
Project name here is "fireflash" and there is an app in that project named "detection_reports". There is another directory named "auto_flash" that has same location as "fireflash". What I want to do is to import test.py file from "auto_flash" in detection_reports.views and call a function from views. Importing like this "from auto_flash import test" throws error "no module named auto_flash".
I have tried all of the above mentioned solutions, but the cleaner solution was to append the path for auto_flash to syspath and the issue was resolved. Thanks to all of you for the efforts.
Move auto_flash to fireflash
In detection_reports add from auto_flash import test.py
Related
ImportError while loading conftest '/home/rohit/flask/src/tests/conftest.py'.
conftest.py:6: in <module>
from mycode import create_app
E ModuleNotFoundError: No module named 'mycode'
when running pytest form the src folder above mycode folder, it gives ModuleNotFoundError
The directory structure is as follow
├── mycode
│ ├── auth
│ ├── auth.py
│ ├── db_insert.py
│ ├── db.py
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── auth.cpython-37.pyc
│ │ ├── db.cpython-37.pyc
│ │ ├── db_insert.cpython-37.pyc
│ │ └── __init__.cpython-37.pyc
│ ├── README.md
│ ├── schema.sql
│ └── templates
│ ├── auth
│ │ ├── login.html
│ │ └── register.html
│ └── base.html
└── tests
├── conftest.py
├── data.sql
├── __pycache__
│ └── conftest.cpython-37-pytest-5.4.1.pyc
└── test_factory.py
Your __init__.py file needs to go in the folder named mycode. If the above is already true then try the following.
Rename __init__.py to mycode.py
You can see here for more solutions that may solve your problem.
I'm trying to import a view from one app to another in my project.
When using this:
from ..from ..KnownLocation.views import KnownLocationView
I get the following error:
ValueError: attempted relative import beyond top-level package
When trying to use:
from triangulationapi.KnownLocation.views import KnownLocationView
It's raising the following error.
ModuleNotFoundError: No module named 'triangulationapi.KnownLocation'
my Project tree:
├── find_second_gdt
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── __pycache__
│ ├── second_GDT_finding
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── __init__.py
├── KnownLocation
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ ├── models.py
│ ├── __pycache__
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── requirements.txt.
└── triangulationapi
├── asgi.py
├── __init__.py
├── __pycache__
├── settings.py
├── urls.py
└── wsgi.py
And, what's the diffrence between using .. and project.app.view...
I thought it is the same up until now.
Try this:
from .KnownLocation.views import KnownLocationView
My project results are as follows, django in automl/service, in automl/service/worker/suggester.py file has an import from automl.core import util and this file imported by views.py, when I run python service/manage.py runserver will raise the exception
from automl.core import util
ModuleNotFoundError: No module named 'automl'
how to solve this problem, does django can not run in a sub package?
├── automl
│ ├── __init__.py
│ ├── core
│ │ ├── __init__.py
│ │ └── base.py
│ ├── example
│ │ ├── __init__.py
│ │ └── demo.py
│ └── service
│ ├── __init__.py
│ ├── manage.py
│ ├── master
│ │ ├── __init__.py
│ │ └── urls.py
│ ├── settings.py
│ ├── worker
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── exceptions.py
│ │ ├── models.py
│ │ ├── suggester.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── urls.py
│ └── wsgi.py
├── bin
├── build.sh
├── ci.yml
├── conf
│ └── log_config.json
└── docs
I have a scrapy project that I put it inside a Django project root folder.
And I have these lines added to the setting :
import sys
import os
sys.path.append('/home/user/Django-projects/first_project')
os.environ['DJANGO_SETTINGS_MODULE'] = 'first_project.settings'
Now when I try to import a model in items.py :
from blog.models import Annonce
I get this message :
ImportError: No module named blog.models
Django project directory:
.
├── assets
│ ├── logo.jpg
│ └── screen.png
├── blog
│ ├── admin.py
│ ├── admin.pyc
│ ├── forms.py
│ ├── forms.pyc
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── database.sql
├── first_project
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── manage.py
├── scrapy project
│ ├── marocannonces
│ │ ├── __init__.py
│ │ ├── __init__.pyc
│ │ ├── items.py
│ │ ├── items.pyc
│ │ ├── middlewares.py
│ │ ├── middlewares.pyc
│ │ ├── pipelines.py
│ │ ├── pipelines.pyc
│ │ ├── settings.py
│ │ ├── settings.pyc
│ │ └── spiders
│ │ └── some spiders here...
│ ├── scrapy.cfg
└── templates
└── blog
├── contact.html
├── home.html
└── read.html
How can I fix this please ?
I am writing a custom Django module but I seem to have something wrong. I cannot import a class that lives in a certain file. I get the error
ValueError: Unable to configure handler 'admins': Cannot resolve 'myPackage.handlers.MyHandlerClass': No module named handlers
This is the directory structure. I believe I can import views and models with no problem.
myPackage
├── CHANGELOG.rst
├── myPackage
│ ├── handlers .py
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0001_initial.pyc
│ │ ├── __init__.py
│ │ └── __init__.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ ├── views.py
│ └── views.pyc
├── myPackage.egg-info
│ ├── dependency_links.txt
│ ├── PKG-INFO
│ ├── requires.txt
│ ├── SOURCES.txt
│ └── top_level.txt
├── MANIFEST.in
├── README.rst
├── requirements.txt
└── setup.py
There is a space in the filename of handlers .py, so python can't find a module names handlers. Obviously the easiest fix is to correct the filename, but for anyone actually wanting a space in the filename, import name with spaces is a syntax error, so the only way to import such a name is using __import__. But this is really a very bad idea.