关于 Django 执行单独文件时导入内部包的问题
.
├── django_web
│ ├── RealTimeData
│ │ ├── init.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ ├── init.py
│ │ ├── models.py
│ │ ├── sql_api_test.html
│ │ ├── templates
│ │ │ └── RealTimeData
│ │ │ └── index.html
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── init.py
│ ├── db.sqlite3
│ ├── django_web
│ │ ├── init.py
│ │ ├── asgi.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ └── manage.py
└── main.py
这是文件结构,同时 main.py 处在一个 django_web 的文件夹下。
现在的问题是:当我单独执行 main.py 文件时,导入 RealTimeData 的模块出现 ModuleNotFoundError 。
然而在配置 DJANGO_SETTINGS_MODULE 时引用 settings 文件是没问题的。sys.path 也包含了 main.py 的父目录的路径。
print(sys.path)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_web.django_web.settings')
django.setup()
from django_web.RealTimeData.models import RowRecord
加个空的 __init__.py 在 main.py 同级目录下面试试?
你的描述跟 tree 的输出结果好像对不上。
“ main.py 处在一个 django_web 的文件夹下”。
看起来文件路径是这样的 "./main.py" "./django_web/manage.py" "./django_web/django_web/wsgi.py"
我没理解错的话,你的 main.py 和最上级的那个 django_web 文件夹是同级的?
我在终端创建 django 项目,然后又在 pycharm 创建项目再倒入 django 项目的文件夹。结果是有三个 django_web 的同名文件夹。
main.py:”django_web/main.py”
settings.py:”django_web/django_web/django_web/settings.py”
手机回复,排版可能不好,请见谅。
我不确定是不是试过这个方法,但还是报错。待会回去再试一下。
python -m main 运行脚本报错会消失吗?
试过并没有
django_web.RealTimeData.models 文件的内容打出来看看,models.py 可能有 import 异常
另外,整个 django 项目的启动可能也会有问题。按照现在的项目路径(假设.是根目录,也就是./main.py ,./django_web 是同一级),那么如果按照 python -m main 的方式启动,./django_web/中所有模块在引入自身的模块时,如果采用绝对路径应该写成 django_web.xxx.xxx 。除非将./django_web 整个变成一个外部包进行 pip install,就可以像 requests 一样进行 import
'''python
from django.db import models
# Create your models here.
class RowRecordManager(models.Manager):
def create_rowrecord(self, date, acc_name, proj_name, unit_name, imp, clk, cost):
rowrecord = self.create(r_date=date,r_account=acc_name,
r_proj=proj_name,r_unit=unit_name,
r_impression=imp,r_click=clk,
r_cost=cost
)
return rowrecord
class RowRecord(models.Model):
r_date = models.DateField()
r_account = models.CharField(max_length=100)
r_proj = models.CharField(max_length=100)
r_unit = models.CharField(max_length=100)
r_impression = models.DecimalField(max_digits=10, decimal_places=0)
r_click = models.DecimalField(max_digits=10, decimal_places=0)
r_cost = models.DecimalField(max_digits=10, decimal_places=2)
objects = RowRecordManager()
def __str__(self):
return '%s,%s,%s,%s,%d,%d,%d' %(str(self.r_date), self.r_account, self.r_proj, self.r_unit, self.r_impression,
self.r_click, self.r_cost)
'''
阿里也这么大一个公司了,AI 发展的这么牛,搞个镜像加速服务,还是一堆镜像没法用。AI 好好分析分析啊,让大家有个自由环境搞不定吗? 是我没说清楚,我意思是阿里搞个镜像站,…
RT 考的架构师,49 ,46 ,45 ,多一分都没有。。。 上午成绩:49.00下午成绩:34.00论文成绩:46.00....唉 尴尬了下午是觉得不对劲 外面标题是:…
目前有红米 note9 k40 华为荣耀 x10 三台安卓机 请问不刷机的话哪台支持 google 框架? note9 试过了不行..貌似小米低端机都需要刷欧版才行 k40 …