使用Enthought Canopy运行Python脚本而不指定完整路径
我想在命令行中使用 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 个回答
顺便说一下,这可能是个打字错误,但为了确保你使用的是模块名,而不是文件名,特别是在使用-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