我做了一些关于这个主题的搜索并发现了一些先前的线程,但我不理解它们中的任何一个,因为我仍然是Python的初学者。
我有一个Python脚本,它有一些长字符串变量存储在子目录中的各种.py文件中。我在运行脚本时从该子目录导入.py文件。子目录中有一个__init__.py
文件。我使用此设置的唯一原因是我在其他文件中存储的长字符串变量会使代码非常难以读取,因为它们是SQL字符串,并且每个可以跨越50-100行。
当我通过PyCharm运行此脚本时,一切都运行良好。
但是,当我通过Windows Scheduler或批处理文件运行脚本时,我得到子目录中所有.py文件的ImportError。问题肯定与python脚本无关,当它运行Windows Scheduler时,不知道在哪里查找这些.py文件。但我不确定如何解决它。
调度程序任务的操作是运行python exe
D:\Python35\python.exe
将参数作为脚本
D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0.py
所以完整的动作如下:
D:\Python35\python.exe "D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0.py"
存储长字符串变量.py文件的子目录是:
D:\python\tableaudatasourcebuilds\dcitechnicalperformance\dcitechnicalperformance0\
导入如下:
from dcitechnicalperformance.dcitechnicalperformance0.dciquer import nzsqldciwk
有谁知道如何解决这个问题?非常感谢任何帮助。
答案 0 :(得分:0)
下午好,
首先,我不知道在模块上存储长SQL查询有多大意义,我不是专家,而是像 JSON文件(或者地狱,甚至将它们存储在sql内的表中)似乎是一种更好的方法。
关于您的问题我认为它位于启动任务的当前目录中,让我解释一下:
如果您决定坚持自己的责备,那么合理的解决方案就是创建一个浏览项目位置的.bat文件:
@ECHO OFF
D:
cd D:\python\tableaudatasourcebuilds\dcitechnicalperformance\
D:\Python35\python.exe dcitechnicalperformance0.py
这应该有用。