【发布时间】:2019-07-30 14:45:14
【问题描述】:
我正在尝试处理上传到 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 行,在 from src.classes.misc import path_to_dest ModuleNotFoundError: No module named 'src'
问题是该文件确实存在。我使用os.listdir() 进行了检查,master.py 确实看到了 src 模块,这是我得到的输出:
[temp.txt, db.sqlite3, pycache, S2T, .idea, manage.py, src, wdir.txt, .git, web_server]
我尝试了很多我在stackoverflow中看到的东西,例如:
- 在 INSTALLED_APPS 中声明包
- 使用导入 .src
- 在 S2T 中移动 src
我想再次声明,从views.py中检测到src模块,我可以导入它的功能,当我启动一个python脚本时问题就来了,然后它抱怨找不到模块,但是os.listdir()确实看到了,所以我对正在发生的事情感到困惑。
非常感谢您的帮助!
【问题讨论】:
-
为什么要通过子进程运行 Python 脚本,而不是仅仅导入并调用它?
-
正如我所说的,我可以避免在这里这样做,但是在我没有创建的其他进程中,有一些启动 python 脚本的 bash 脚本,所以我需要完成这项工作
标签: python django module python-import