python - 使用从其他脚本导入函数的 .bat 运行 python 脚本
问题描述
我正在尝试通过 .bat 运行我的 python 脚本。该脚本从其他脚本导入函数,并且在 IDE(Spyder) 中运行时可以正常工作,但是当我运行 .bat 时出现无法导入模块的错误。
.bat 如下
"D:\Users\User\AppData\Local\Programs\Python\Python38-32\python.exe" "D:\Users\User\Documents\programming\test.py"
我收到以下错误
回溯(最后一次调用):文件“D:\Users\User\Documents\programming\test.py”,第 1 行,来自 SFTPDownload 导入下载SFTP ModuleNotFoundError:没有名为“SFTPDownload”的模块
我需要在 .bat 中添加什么来获取我在 SFTPDownload.py 中的功能。这与 test.py 位于同一文件夹中。
提前致谢。
解决方案
如果SFTPDownload.py
您的文件在文件夹中,D:\Users\User\Documents\programming\
那么您必须在运行 python 脚本之前转到此文件夹
cd D:\Users\User\Documents\programming\
D:\Users\User\AppData\Local\Programs\Python\Python38-32\python.exe test.py
系统可能会在不同的文件夹(用作Current Working Directory
)中运行您的批处理,然后 python 脚本在此文件夹中搜索您的文件。
在 Python 中,您可以检查Current Working Directory
print( os.getcwd() )
另请参阅:批处理文件中的当前目录是什么?
最终在导入之前的 python 脚本中,SFTPDownload
您可以将文件夹添加到python 用来搜索导入文件D:\Users\User\Documents\programming\
的特殊列表。sys.path
import sys
sys.path.insert(0, r'D:\Users\User\Documents\programming\')
import SFTPDownload
为了使它更通用(所以当你移动到不同的文件夹时它会起作用test.py
)SFTPDownload.py
你可以尝试
import sys
import os
APP_FOLDER = os.path.abspath(os.path.dirname(__file__))
#APP_FOLDER = os.path.abspath(os.path.dirname(sys.argv[0]))
sys.path.insert(0, APP_FOLDER)
import SFTPDownload
推荐阅读
- java - 使用 CJKAnalyzer 进行 Apache Lucene 索引器搜索
- reactjs - Material-UI MenuItems 选择后不显示
- ios - 使用动画更改 CollectionView 位置,但在第一次滚动时向后移动
- ruby - 用于存在验证的 Rspec 在 Rails 5 中不起作用
- php - 预填充在 razorpay 中不起作用
- javascript - 什么时候,如果有的话,你应该使用 `jQuery` 而不是 `$`?
- regex - 角度指令中的无效正则表达式错误
- jquery - 数据库中有两行新行,但在 Javascript 中只计算了一个新行
- inno-setup - Inno Setup - 在更新时删除旧的/过时的文件
- azure - 即使始终开启选项处于打开状态,Azure 上的 Webjob 也不会连续运行