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
的基本代码 (taken from here),它位于我的 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 不太了解,并尝试查找正在发生的事情,但是对有类似问题的人的解决方案对我没有用;幕后发生了什么我不理解的事吗?
pwd
告诉你当前目录。它不会告诉您命令所在的位置。该命令的输出是一条红鲱鱼。
您可能正在寻找 which python
。将该路径放入您的 shebang 行中。请注意,这将为您提供来自 $PATH
的 Python 解释器,它可能是正确的,也可能不是正确的。
Python 脚本的标准 shebang 行是
#!/usr/bin/env python
或
#!/usr/bin/python
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
我在尝试将 python 脚本设置为可执行文件以测试某些内容时遇到了类似的问题,我意识到 bash 的阻碍多于它的帮助。我最终设置了 pyinstaller(这非常简单),然后使我的脚本成为一个独立的可执行文件,而没有 bash 在混合中。
这是我所做的(只需要几分钟,没有配置):
第一的; pyinstaller 需要:build-essential & python-dev
apt-get install build-essential python-dev
(或 yum 等...取决于您的 OS)
然后使用内置的 python 包管理器来设置 pyinstaller:
pip 安装 pyinstaller
就是这样。 运行: pyinstaller --onefile myapp.py (或者 pyinstaller.exe 如果你的 OS 需要 exe)
如果成功(通常是这样),您的新可执行文件将位于您 运行 pysinstaller 所在区域的文件夹 "Dist" 中。
我试图通过向本地服务器启动测试应用程序来感受 Flask 微框架。在尝试 运行 我的代码 app.py
时,我不断收到错误消息:
-bash: ./app.py: /flask/bin/python: bad interpreter: No such file or directory
这是 app.py
的基本代码 (taken from here),它位于我的 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 不太了解,并尝试查找正在发生的事情,但是对有类似问题的人的解决方案对我没有用;幕后发生了什么我不理解的事吗?
pwd
告诉你当前目录。它不会告诉您命令所在的位置。该命令的输出是一条红鲱鱼。
您可能正在寻找 which python
。将该路径放入您的 shebang 行中。请注意,这将为您提供来自 $PATH
的 Python 解释器,它可能是正确的,也可能不是正确的。
Python 脚本的标准 shebang 行是
#!/usr/bin/env python
或
#!/usr/bin/python
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
我在尝试将 python 脚本设置为可执行文件以测试某些内容时遇到了类似的问题,我意识到 bash 的阻碍多于它的帮助。我最终设置了 pyinstaller(这非常简单),然后使我的脚本成为一个独立的可执行文件,而没有 bash 在混合中。
这是我所做的(只需要几分钟,没有配置): 第一的; pyinstaller 需要:build-essential & python-dev
apt-get install build-essential python-dev
(或 yum 等...取决于您的 OS)
然后使用内置的 python 包管理器来设置 pyinstaller: pip 安装 pyinstaller
就是这样。 运行: pyinstaller --onefile myapp.py (或者 pyinstaller.exe 如果你的 OS 需要 exe)
如果成功(通常是这样),您的新可执行文件将位于您 运行 pysinstaller 所在区域的文件夹 "Dist" 中。