Python 一致性shebangs

Python 一致性shebangs,python,executable,shebang,Python,Executable,Shebang,我试图创建一个可执行的python脚本,以便在命令行上使用(目标是上传到PyPi)。为此,我需要添加一个shebang 在linux上我有#/usr/bin/env python3 对于windows,我需要#!蟒蛇3 如何为不同的操作系统获得适当的shebang 旁注:我查看了conda环境中的一个可执行文件(cookiecutter)示例。我注意到这是一个很好的例子 #!/home/<my-name>/miniconda/envs/<some-environment&g

我试图创建一个可执行的python脚本,以便在命令行上使用(目标是上传到PyPi)。为此,我需要添加一个shebang

  • 在linux上我有
    #/usr/bin/env python3
  • 对于windows,我需要
    #!蟒蛇3
如何为不同的操作系统获得适当的shebang

旁注:我查看了conda环境中的一个可执行文件(cookiecutter)示例。我注意到这是一个很好的例子

#!/home/<my-name>/miniconda/envs/<some-environment>/bin/python3.6
#/home//miniconda/envs//bin/python3.6
康达在这里做些聪明的事吗?那pip呢?

Linux系统。只要始终如一地使用Linux shebang。Conda的shebang旨在启动一个非常特定的Python安装;一般来说,您希望使用默认的最新Python 3安装,Linux上的
路径
查找方法(以及Windows上的仿真)就是您想要的。只要始终如一地使用Linux shebang。Conda的shebang旨在启动一个非常特定的Python安装;通常,您希望使用默认的最新Python3安装,Linux(和Windows上的仿真)上的
路径
查找方法就是您想要的。

使用
控制台脚本
功能

它将为您生成shebang

使用
控制台脚本
功能


它将为您生成shebang

您使用什么来安装脚本?使用
setup.py
的任何东西都已经存在,因此作者不必担心只与最终用户有关的事情。要清楚,不要假设脚本应该使用用户路径中的任何Python运行,这就是
/usr/bin/env python3
所做的。也许您的用户根本不使用Python2,也不使用
python3
作为python3解释器的名称;当安装到您的虚拟环境中时,shebang被替换为属于该虚拟环境的Python二进制文件的路径。@chepner这由用户决定
python3
是解释器的默认和推荐名称,如果用户安装了python3,则解释器的某些版本应位于用户路径中。我知道一些POSIX操作系统在默认情况下会有所不同(忘记了哪个),但是…呃,默认情况是根据谁来决定的?无论如何,重点是,作者不应该担心口译员的位置;这由安装程序决定,这就是Python(一直到
distutils
)所支持的。您使用什么来安装脚本?使用
setup.py
的任何东西都已经存在,因此作者不必担心只与最终用户有关的事情。要清楚,不要假设脚本应该使用用户路径中的任何Python运行,这就是
/usr/bin/env python3
所做的。也许您的用户根本不使用Python2,也不使用
python3
作为python3解释器的名称;当安装到您的虚拟环境中时,shebang被替换为属于该虚拟环境的Python二进制文件的路径。@chepner这由用户决定
python3
是解释器的默认和推荐名称,如果用户安装了python3,则解释器的某些版本应位于用户路径中。我知道一些POSIX操作系统在默认情况下会有所不同(忘记了哪个),但是…呃,默认情况是根据谁来决定的?无论如何,重点是,作者不应该担心口译员的位置;这由安装程序来决定,这就是Python(一直到
distutils
)所支持的。