n8h*_*rie 5 python shebang python-2.7
OSX 10.8.2上的Python 2.7.3
我正在编写一个导入markdown模块的脚本.我使用了#!/usr/bin/env pythonshebang来实现便携性.当我直接在shell中运行脚本时,脚本运行正常./myscript.py arg1
当我从(登录)shell外部运行脚本时,例如通过AppleScript do shell script "/path/to/myscript.py " & quoted form of arg1,它失败了
myscript.py", line 8, in <module>
import markdown
ImportError: No module named markdown
Run Code Online (Sandbox Code Playgroud)
我想这可能是shebang的一个问题,所以我将shebang改为我的python位置#!/usr/local/bin/python,果然脚本运行正常.
所以我的问题有两个:
/usr/bin/env python破坏我的导入?/usr/local/bin/python?#!/usr/bin/env python意思是“像 shell 正在寻找它一样去寻找它,然后运行它。python” $PATH因此,由于您得到不同的结果,因此您可能使用了不同的 python。
要检查,看看是否正在运行/usr/local/bin/python并/usr/bin/env python给你相同的 python。您还可以使用type -a python来查找python上的所有内容$PATH。在我的系统上,type -a python给出:
python is /opt/local/bin/python
python is /usr/bin/python
python is /usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
(第一个是由 MacPorts 安装的。)
无论如何,正如罗德里戈指出的那样,直接启动可能不会使用$PATH您期望的方式。这意味着使用/usr/bin/env不会起作用。
| 归档时间: |
|
| 查看次数: |
2496 次 |
| 最近记录: |