从Django启动的脚本中导入自定义模块

时间:2019-07-30 14:45:14

标签: python django module python-import

我正在尝试处理上传到Django服务器的文件。收到文件后,我将启动一个处理文件的python脚本(我需要以这种方式而不是使用类来执行该文件,因此请不要告诉我从类中进行处理)。

我的Django结构如下:

项目

  • 网络服务器:
    • 设置...
    • url.py ...
  • S2T:这是我的应用程序,对我有意见
    • views.py
    • apps.py ...
  • src:这里有我的自定义模块,我将专注于2:
    • 管道
      • master.py
      • misc.py

从视图中,我启动一个python脚本:

sb_info = subprocess.run(['python', 'src/pipeline/master.py', '/tmp'], stdout=subprocess.PIPE, universal_newlines=True)

这很好用,但是启动脚本时出现以下错误:

  

文件“ src / pipeline / master.py”,第10行,在       从src.classes.misc导入path_to_dest ModuleNotFoundError:没有名为“ src”的模块

问题在于该文件确实存在。我已经使用os.listdir()进行了检查,master.py确实看到了src模块,这是我得到的输出:

  

[temp.txt,db.sqlite3, pycache ,S2T,.idea,manage.py,src,   wdir.txt,.git,web_server]

我已经尝试了很多我在stackoverflow中看到的东西,例如:

  • 在INSTALLED_APPS中声明包
  • 使用import .src
  • 在S2T中移动src

我想再次声明,从views.py中可以检测到src模块,可以导入其功能,当我启动python脚本时出现问题,然后统计信息抱怨找不到模块,但是{{1 }}确实看到了,所以我对正在发生的事情感到困惑。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题似乎出在您提供的导入路径上。 src模块位于脚本提供的树的上方两层,因此在每个目录中都包含显式__init__.py文件,以从父模块进行绝对导入,如下所示:

Python: Import file in grandparent directory