繁体   English   中英

Python脚本:shebang行(unix)问题

[英]Python script: problems with shebang line (unix)

我试图通过向本地服务器启动测试应用程序来感受Flask微框架。 尝试运行代码app.py ,我不断收到错误消息:

-bash: ./app.py: /flask/bin/python: bad interpreter: No such file or directory

这是app.py的基本代码(从此处获取) ,位于我的todo-api目录中:

#!/flask/bin/python
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(debug=True)

我已经检查了python解释器的文件路径,它应该存在:

:bin $ pwd python

Users/me/Documents/Python/todo-api/flask/bin

我已经按照教程学习了T; 我尝试将shebang行更改为:

#!/flask/bin/python2.x
#!flask/bin/python
#!/flask/bin/env python

但无济于事。 我对bash并不了解,并且尝试查找正在发生的事情,但是对于遇到类似问题的人来说,解决方案对我没有用; 幕后是否有我不了解的事情?

Bash shebangs期望获得通往口译员的绝对路径。 因此,在您的情况下,您需要指定Python解释器的完整路径,即:

#!/Users/me/Documents/Python/todo-api/flask/bin

您可能想研究/usr/bin/env python ,以便能够使用用户的$PATH环境变量中可用的解释器。 参见https://unix.stackexchange.com/questions/12736/how-does-usr-bin-env-know-which-program-to-use/12751#12751

pwd告诉您当前目录。 它不会告诉您命令的位置。 该命令的输出是红色鲱鱼。

您可能正在寻找which python 将该路径放入您的shebang行中。 请注意,这将为您提供$PATH的Python解释器,它可能是正确的,也可能不是正确的。

Python脚本的标准shebang行是

#!/usr/bin/env python

要么

#!/usr/bin/python

我在尝试将python脚本设置为可执行文件以测试某些东西时遇到了类似的问题,并意识到bash的作用远不止于帮助。 我最终设置了pyinstaller(这非常简单),然后使我的脚本成为一个独立的可执行文件,而无需担心bash的问题。

这是我所做的(仅需几分钟,无需配置): pyinstaller需要:build-essential和python-dev

apt-get install build-essential python-dev
(或yum等...,具体取决于您的操作系统)

然后使用内置的python软件包管理器来设置pyinstaller: pip install pyinstaller

而已。 运行:pyinstaller --onefile myapp.py(如果操作系统需要exe,则运行pyinstaller.exe)。

如果成功(通常是成功的话),您的新可执行文件将在运行pysinstaller的同一区域的“ Dist”文件夹中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM