如何从 Applescript => 运行 Python(使用导入的模块)=> 找不到模块错误
How to Run Python (with imported modules) from Applescript => Module Not Found Errors
如何从 Applescript 运行 一个 python 脚本(带有导入的模块)?
从终端,这些脚本工作正常
python -m api.get_classrooms
python /absolute/path/to/project/api/get_classrooms.py
如果我 运行 来自 AppleScript 的终端脚本,我得到模块未找到错误:
set pythonPath to "/path/to/anaconda3/envs/jupyter/bin/python"
set scriptPath to "/absolute/path/to/project/api/get_classrooms.py"
set result to do shell script pythonPath & " " & scriptPath & " "
我收到错误
ModuleNotFoundError: No module named 'api'"
我确实将我的项目添加到 .bash_profile
中的 $PYTHONPATH
echo $PYTHONPATH => /path/to/project/a
并且 python 文件(由 AppleScript 调用)设置为可执行文件
Applescript 不知道 PYTHONPATH 吗?
任何朝着正确方向的推动都会受到赞赏。
AppleScript 的 do shell script
不导入典型交互式 shell 使用的环境。这包括 $PATH 变量,我怀疑这是你的专业人士的错误所在。您可以通过调用 Terminal 等应用程序使用的 path_helper 实用程序来强制它进行完整设置。试试 运行 这个代码:
set pythonPath to "/path/to/anaconda3/envs/jupyter/bin/python"
set scriptPath to "/absolute/path/to/project/api/get_classrooms.py"
set result to do shell script "eval `/usr/libexec/path_helper -s`; python -m api.get_classrooms"
感谢 ted wrigley :) 我终于能够让它工作了...
不直接针对get_classrooms.py脚本。
相反,AppleScript 运行以下 shell 脚本(在项目的子目录 'bash' 中工作)。
bash 脚本执行 python 脚本。
这不是我想要的确切解决方案......但它有效......并且(可能)更优雅......至少在项目转换为带有 flask 的 webapp 之前是这样。
对于使用 applescript
定位 python 脚本有困难的任何人 applescript=>bash=>python
Applescript
do shell script "/Users/me/path/to/project/bash/applescript.sh"
Bash project/bash 目录中的脚本
#!/usr/bin/env bash
# eval /usr/libexec/path_helper -s; # didn't need
export PYTHONPATH='/Users/me/path/to/project';
/Users/me/anaconda3/envs/jupyter/bin/python -m api.get_classrooms
如何从 Applescript 运行 一个 python 脚本(带有导入的模块)?
从终端,这些脚本工作正常
python -m api.get_classrooms
python /absolute/path/to/project/api/get_classrooms.py
如果我 运行 来自 AppleScript 的终端脚本,我得到模块未找到错误:
set pythonPath to "/path/to/anaconda3/envs/jupyter/bin/python"
set scriptPath to "/absolute/path/to/project/api/get_classrooms.py"
set result to do shell script pythonPath & " " & scriptPath & " "
我收到错误
ModuleNotFoundError: No module named 'api'"
我确实将我的项目添加到 .bash_profile
中的 $PYTHONPATHecho $PYTHONPATH => /path/to/project/a
并且 python 文件(由 AppleScript 调用)设置为可执行文件
Applescript 不知道 PYTHONPATH 吗?
任何朝着正确方向的推动都会受到赞赏。
AppleScript 的 do shell script
不导入典型交互式 shell 使用的环境。这包括 $PATH 变量,我怀疑这是你的专业人士的错误所在。您可以通过调用 Terminal 等应用程序使用的 path_helper 实用程序来强制它进行完整设置。试试 运行 这个代码:
set pythonPath to "/path/to/anaconda3/envs/jupyter/bin/python"
set scriptPath to "/absolute/path/to/project/api/get_classrooms.py"
set result to do shell script "eval `/usr/libexec/path_helper -s`; python -m api.get_classrooms"
感谢 ted wrigley :) 我终于能够让它工作了...
不直接针对get_classrooms.py脚本。
相反,AppleScript 运行以下 shell 脚本(在项目的子目录 'bash' 中工作)。
bash 脚本执行 python 脚本。
这不是我想要的确切解决方案......但它有效......并且(可能)更优雅......至少在项目转换为带有 flask 的 webapp 之前是这样。
对于使用 applescript
定位 python 脚本有困难的任何人 applescript=>bash=>python
Applescript
do shell script "/Users/me/path/to/project/bash/applescript.sh"
Bash project/bash 目录中的脚本
#!/usr/bin/env bash
# eval /usr/libexec/path_helper -s; # didn't need
export PYTHONPATH='/Users/me/path/to/project';
/Users/me/anaconda3/envs/jupyter/bin/python -m api.get_classrooms