Python 3 脚本使用什么 shebang 是 运行 无论有没有虚拟环境?
What shebang to use for a Python 3 script that is to be run both with and without a virtual environment?
我有一个 Python 3 脚本,我正在 Linux 机器 (Ubuntu) 上开发,但它将部署在嵌入式 Linux 设备上.
在我的开发机器上,我需要的包安装在 "virtual environment" 中,但在嵌入式设备上,包是全局安装的。设备上没有虚拟环境,因为它被设计为 运行 只有这个脚本。
我不知道应该在我的脚本之上添加什么 shebang。
根据 ,在虚拟环境中 运行 脚本的 shebang 应该是:
#!/usr/bin/env python
但是对于 运行 带有 Python 3 的脚本,shebang 应该是:
#!/usr/bin/python3
问题是如果我使用这些 shebang 中的第一个,脚本 运行 在我的开发机器上,但在部署时不会 运行。在嵌入式设备上,它尝试使用 Python 2 运行 并失败。当我使用第二个 shebang 时,脚本 运行s 在嵌入式设备上而不是在我的开发机器上,因为它没有使用虚拟环境中的 Python 3。
有没有我可以使用的 shebang 可以在两种情况下使用:有和没有虚拟环境?
是的,我知道我可以 运行 我的脚本作为 python3 my_script.py
,shebang 无关紧要。如果我不能让一个 shebang 在这两种情况下工作,我想这就是我必须做的。
你很接近。您可以使用 python3
因为 python
和 python3
的 link 将在 virtualenv 的 bin 目录中创建。
只需这样做即可:
#!/usr/bin/env python3
...
我有一个 Python 3 脚本,我正在 Linux 机器 (Ubuntu) 上开发,但它将部署在嵌入式 Linux 设备上.
在我的开发机器上,我需要的包安装在 "virtual environment" 中,但在嵌入式设备上,包是全局安装的。设备上没有虚拟环境,因为它被设计为 运行 只有这个脚本。
我不知道应该在我的脚本之上添加什么 shebang。
根据
#!/usr/bin/env python
但是对于 运行 带有 Python 3 的脚本,shebang 应该是:
#!/usr/bin/python3
问题是如果我使用这些 shebang 中的第一个,脚本 运行 在我的开发机器上,但在部署时不会 运行。在嵌入式设备上,它尝试使用 Python 2 运行 并失败。当我使用第二个 shebang 时,脚本 运行s 在嵌入式设备上而不是在我的开发机器上,因为它没有使用虚拟环境中的 Python 3。
有没有我可以使用的 shebang 可以在两种情况下使用:有和没有虚拟环境?
是的,我知道我可以 运行 我的脚本作为 python3 my_script.py
,shebang 无关紧要。如果我不能让一个 shebang 在这两种情况下工作,我想这就是我必须做的。
你很接近。您可以使用 python3
因为 python
和 python3
的 link 将在 virtualenv 的 bin 目录中创建。
只需这样做即可:
#!/usr/bin/env python3
...