英文:
python makefile can't find python command
问题
On my M2 Mac, Python makefile does not work. I'm running everything in iterm2.
Error when running makefile:
➜ make test-local
/bin/sh: python: command not found
make: *** [test-local] Error 127
Python path:
➜ which -a python
python: aliased to /usr/local/bin/python3.9
➜ python
Python 3.9.17 (main, Jun 20 2023, 17:20:08)
[Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits", or "license" for more information.
My .zshrc file. I read other SOF articles so I tried adding to my path to no avail.
alias python=python3
PYTHON="$PATH:/Users/lewis.chi/Library/Python/3.9/bin"
PYTHON1="/usr/local/bin/python3.9"
PYTHON11="/usr/local/bin/"
export PATH=$PATH:$PYTHON:$PYTHON1:$PYTHON11
英文:
On my M2 Mac, Python makefile does not work. I'm running everything in iterm2.
test-local:
TREE_SITTER_LIB_PATH=./test python -m pytest
Error when running makefile:
➜ make test-local
/bin/sh: python: command not found
make: *** [test-local] Error 127
Python path:
➜ which -a python
python: aliased to /usr/local/bin/python3.9
➜ python
Python 3.9.17 (main, Jun 20 2023, 17:20:08)
[Clang 14.0.3 (clang-1403.0.22.14.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
My .zshrc file. I read other SOF articles so I tried adding to my path to no avail.
alias python=python3
PYTHON="$PATH:/Users/lewis.chi/Library/Python/3.9/bin"
PYTHON1="/usr/local/bin/python3.9"
PYTHON11="/usr/local/bin/"
export PATH=$PATH:$PYTHON:$PYTHON1:$PYTHON11
答案1
得分: 1
这是你的问题:
➜ which -a python
python: 别名为 /usr/local/bin/python3.9
这意味着 python
是一个 shell alias。Shell 别名只对你正在使用的 shell 本地,不会导出到子 shell,并且 make
对别名一无所知。因此,你不能在 make 配方中运行别名。
如果你想让这个工作,你必须找到另一种方法。你可以使用一个 make 变量并在命令行上设置它为正确的值,你可以使用一个 python
脚本代替别名,你可以将 python
设置为对 python3
的符号链接,等等。
但你不能使用 shell 别名。
顺便说一下,对于 shell 函数也是一样:它们也只对当前 shell 本地,不会导出到外部。
英文:
This is your problem:
➜ which -a python
python: aliased to /usr/local/bin/python3.9
This implies that python
is a shell alias. Shell aliases are local to the shell that you're using, they are not exported to sub-shells and make
doesn't know anything about aliases. So, you cannot run aliases from within make recipes.
If you want to make this work, you have to find a different way. You can use a make variable and set it to the right value on the command line, you can use a python
script instead of an alias, you can make python
a symbolic link to python3
, etc. etc.
But you cannot use a shell alias.
Ditto for shell functions, by the way: they are also local to the shell and not exported.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论