OSX 10.8.2上的Python2.7.3
我正在编写一个导入降价模块的脚本。为了便于移植,我使用了#!/usr/bin/env python
shebang。当我通过./myscript.py arg1
直接在shell中运行脚本时,它运行得很好
当我从(登录)shell外部运行脚本时,例如通过AppleScriptdo shell script "/path/to/myscript.py " & quoted form of arg1
,它将失败
myscript.py", line 8, in <module>
import markdown
ImportError: No module named markdown
我想这可能是shebang的一个问题,所以我将shebang更改为python位置#!/usr/local/bin/python
,脚本运行得很好。在
所以我的问题有两个:
/usr/bin/env python
会破坏我的导入?在/usr/local/bin/python
?在
#!/usr/bin/env python
的意思是“在$PATH
上找到python
,就像shell正在寻找它一样,然后运行它。”因此,由于得到的结果不同,可能使用的是不同的python。在要进行检查,请查看运行
/usr/local/bin/python
和/usr/bin/env python
是否提供相同的python。您还可以使用type -a python
来查找$PATH
上的每一个python
。在我的系统中,type -a python
给出:(第一个由MacPorts安装。)
总之,正如rodrigo指出的,直接启动可能没有使用您期望的
$PATH
。这意味着使用/usr/bin/env
是行不通的。在嗯,看起来登录shell中的PATH环境变量与AppleScript进程中的环境变量不同。在
我猜您有一个
.profile
文件或类似的行:但只有在打开shell时才会执行该文件,而不是从其他进程中执行该文件。显然,
/usr/bin/python
中有一个不同版本的Python,它没有markdown模块。在相关问题 更多 >
编程相关推荐