我遇到了同样的问题,但是在需要为 Windows 用户(来自 Linux)打包我的代码的情况下。我的包包含许多带有命令行选项的脚本。
我需要将这些脚本安装在 Windows 用户计算机上的适当位置,以便他们可以从命令行调用它们。由于该软件包应该是用户友好的,因此要求我的用户更改他们的注册表以运行这些脚本是不可能的。
我遇到了一个解决方案,Continuum 的人们使用他们的 Anaconda 包附带的 Python 脚本——查看你的 Anaconda/Scripts 目录以获取示例。
对于 Python 脚本test
,创建两个文件: atest.bat
和 a test-script.py
。
test.bat
如下所示(调用中的.bat
文件具有我为我的目的而调整的相对路径):Anaconda\Scripts
python.exe
@echo off
set PYFILE=%~f0
set PYFILE=%PYFILE:~0,-4%-script.py
"python.exe" "%PYFILE%" %*
test-script.py
是您实际的 Python 脚本:
import sys
print sys.argv
如果您将这两个文件留在本地目录中,您可以通过该.bat
文件调用您的 Python 脚本:
test.bat hello world
['C:\\...\\test-scripy.py', 'hello', 'world']
如果您将这两个文件复制到您的PATH
(例如Anaconda\Scripts
)上的某个位置,那么您甚至可以通过省略.bat
后缀来调用您的脚本
test hello world
['C:\\...Anaconda\\Scripts\\test-scripy.py', 'hello', 'world']
免责声明:我不知道发生了什么以及它是如何工作的,因此希望得到任何解释。