我正在尝试将Ubuntu 16中的python脚本捆绑在一起,以便它能够在Windows上作为独立程序运行。我可以随身携带任何文件夹,只要我不需要在Windows端安装任何东西。我知道最简单的方法是将所有包装在一个文件夹中。但是,像numpy
和pygame
这样的软件包直接安装在我的机器上,因此我必须搜索独立文件夹并单独测试以确保它们与python脚本一起使用。
我知道有些应用程序尝试将python脚本压缩为可执行文件。我已经尝试了pyinstaller
,py2exe
和py2app
。其中每一个都假设我使用的唯一模块是安装的软件包,如上面列出的numpy和pygame。但是,我也使用模块SGC,它不是普通的python模块,而是我手动安装的模块(对于记录,AFAIK只能通过运行build.py
和{{1}来安装它。在SGC文件夹中的脚本)。我已经尝试制作一个可执行文件并在同一文件夹中使用SGC运行它,但这不起作用。
Pyinstaller能够同时使用SGC和常规模块。但是,它的可执行文件只能在Linux上运行,而不能在Windows上运行。所以在使用这个very buggy script在葡萄酒上使用Pyinstaller后,我发现它再一次假设我只使用常规模块,并且不知道如何包含SGC。
我知道这个问题有点模糊,但是在广阔的python世界中,有一种直接的方法可以将我的python脚本从一台机器分发到另一台机器,对吧?
我知道我可以在Windows端安装Python并从头开始,但肯定有更好的选择。
答案 0 :(得分:0)
我能够使用Eric的建议文章,但对我的任务进行了一些调整。
wine pyinstaller
能够以两种不同的方式为python找到模块:1)如果模块位于当前目录中,或者2)如果模块专门安装在wine(而不是Ubuntu)上。
因为我有SGC文件夹,所以我能够在同一目录中运行wine pyinstaller
,从而解决了这个问题。至于其他每个模块,我使用以下命令将它们安装在wine中:
cd ~/.wine/drive_c/Python27/
wine python.exe Scripts/pip.exe install pygame
wine python.exe Scripts/pip.exe install numpy
然后我就能以这种方式为windows创建可执行文件:
cd ~/Documents/folder_with_sgc/
wine ~/.wine/drive_c/Python27/Scripts/pyinstaller.exe --onefile Loop.py
并验证它是这样工作的:
cd dist/
wine Loop.exe