【发布时间】:2017-06-04 11:15:43
【问题描述】:
我目前正在准备一个 shell 脚本,作为其功能的一部分,它必须执行一些 Python 调用。
PY_OP=$(python -c 'import my_package as mp; print mp.some_operation()')
但是,当我在 bash 中调用我的 shell 脚本时,我只收到一个非常奇怪的语法错误:
$ ./my_script.sh
File "<string>", line 1
import my_package as mp; print mp.some_operation()
^
SyntaxError: invalid syntax
有趣的是,如果我只是从 bash 中执行 python -c ... 命令,则不会发生此错误。
作为补充信息,我可以说以下内容:
- 我正在使用
virtualenv来包含所有pip已安装的软件包。 - 我使用的Python版本是2.7.12
- 我的操作系统是elementaryOS 0.4.1(不过完全基于Ubuntu 16.04)
任何关于我做错了什么的建议或提示将不胜感激。
【问题讨论】:
-
我得到这三行:
Traceback (most recent call last):、File "<string>", line 1, in <module>和ImportError: No module named my_package。 -
检查您的文件是否有特殊字符:
cat -A file.sh或cat -v file.sh。 -
@Cyrus 感谢您的提示。
cat -A file.sh已经成功了。当我运行它时,import语句实际上看起来像这样importM-BM- my_packageM-BM- asM-BM- mp。尽管这些字符在普通编辑器中是不可见的,但这显然是导致脚本失败的原因。如果您只是将评论复制到答案中,我很乐意接受它作为正确的解决方案。
标签: bash python-2.7 shell ubuntu virtualenv