Python脚本的可移植exe包装器。在什么情况下,我的解决方案不起作用?
我为Python 2和3脚本提供了以下包装: 对于类Unix系统:Python脚本的可移植exe包装器。在什么情况下,我的解决方案不起作用?,python,bash,cmd,Python,Bash,Cmd,我为Python 2和3脚本提供了以下包装: 对于类Unix系统: #!/bin/sh SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)" /usr/bin/env python2.7 "$SCRIPTDIR/program27.py" "$@" #!/bin/sh SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)" /usr/bin/env python3 "$SCRIPTDIR/progra
#!/bin/sh
SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
/usr/bin/env python2.7 "$SCRIPTDIR/program27.py" "$@"
#!/bin/sh
SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)"
/usr/bin/env python3 "$SCRIPTDIR/program34.py" "$@"
对于Windows:
@py -2 "%~dp0\program27.py" %*
@py -3 "%~dp0\program34.py" %*
脚本是严格的命令行工具,它们始终与包装器放在同一个目录中。脚本中也有版本检查。我基本上是在尝试确保使用正确的Python调用它们,并确保它们在尽可能多的系统和Python发行版上运行
上面的包装器是我在Windows、Linux、Cygwin和Darwin(可能还有BSD)上发现的唯一可以与标准Python发行版配合使用的包装器
我是这些东西的初学者,我知道没有完美的解决方案,所以我想知道是否有人能指出在什么情况下上述方法不起作用,并帮助我改进
谢谢。有关如何在Windows上正确的Python解释器中处理执行代码的信息,请参阅。另一方面,本文介绍了在类Unix平台上运行时的类似主题。最近的更改是在中进行的,以允许在应该执行代码的位置定义行为
PEP 397:Windows的Python启动器
Python 3.3 Windows安装程序
现在包括一个py launcher应用程序,可用于启动
Python应用程序以独立于版本的方式运行
双击*.py文件时隐式调用此启动器。
如果系统上只安装了一个Python版本,那么
版本将用于运行该文件。如果需要多个版本
已安装,默认情况下使用最新版本,但可以
通过在Python中包含Unix样式的“shebang行”覆盖
剧本
启动器也可以从命令行显式地用作
py应用程序。运行py遵循的版本选择规则与
隐式启动脚本,但可以使用更具体的版本
通过向请求传递适当的参数(例如-3)来选择
如果还安装了Python2,则为Python3,或者指定为-2.6
当需要更新的Python版本时,请求更早的Python版本
已安装)
除了启动器,Windows安装程序现在还包括
选项将新安装的Python添加到系统路径。
(Brian Curtin在第3561期中提供。)
简言之,用以下几行作为代码的开头:
#/用于python2.x的usr/bin/env python2
#/用于python3.x的usr/bin/env python3
python2
,或者python
引用python3时,我仍然对最佳解决方案感兴趣。