使用Enthought Canopy运行Python脚本而不指定完整路径

2 投票
1 回答
2189 浏览
提问于 2025-04-18 07:52

我想在命令行中使用 Enthought Canopy 来运行一个 Python 脚本,但我不想每次都输入脚本的完整路径。

我觉得有两个方法可以做到这一点。

方法一:把 Python 脚本变成可执行文件,在脚本的最上面加上 #!/usr/bin/env python,然后把包含这个脚本的文件夹添加到我的 $PATH 里。这样我就可以像这样执行脚本:

$ run.py

方法二:正如 Andrew Clark 在另一个 SO 帖子 中提到的,只需把包含脚本的文件夹添加到我的 $PYTHONPATH 里。然后我可以像这样执行脚本:

$ python -m run.py

这里的 -m 是让 Python 在 $PYTHONPATH 中查找。

我更喜欢方法二,这在我 Mac 上的系统 Python(版本 2.7.2)中运行得很好,但我在 Enthought Canopy 中却无法做到。我可以加载 Canopy 的 Python,并在与 run.py 同一目录下导入模块,所以我知道路径是正确的。就是无法从命令行执行这个脚本。这是个bug,还是我做错了什么?

1 个回答

0

顺便说一下,这可能是个打字错误,但为了确保你使用的是模块名,而不是文件名,特别是在使用-m选项时。比如,你应该这样写:python -m run

如果这不是问题的话,那就要确认你在第二个选项中使用的python是你Canopy用户虚拟环境中的python。你可以用which命令来检查这一点。例如:

$ which python /Users/YourUserId/Library/Enthought/Canopy_64bit/User/bin/python

如果你得到的不是这个路径,那么你可以选择把那个bin文件夹添加到你的PATH环境变量的开头,或者你可以像这样激活那个虚拟环境:

source /Users/YourUserId/Library/Enthought/Canopy_64bit/User/bin/activate

撰写回答