我用Python做了第二个程序。 这是一个计算二次方程根的程序。 我觉得这很酷,我想让我的朋友们使用它,而不必让他们安装python。
我从朋友那里听说过Pyinstaller,我试过这个方法:首先我在cmd中inputpip install pyinstaller
。 然后我改变目录到包含我想与我的朋友分享的文件的文件夹(它被称为vkv.py
)。 然后我input这个命令: pyinstaller vkv.py
但我得到这个错误: Indexerror: tuple index out of range
。 显然问题是我有Python 3.6.0和Pyinstaller只能使用Python 3.5以上的版本。
所以我不得不尝试另一种方法。 昨天,我尝试了cx_Freeze和其他一些我忘记的方法,但都失败了。 Cx_Freeze失败,因为我有Python 3.6.0(与Pyinstaller相同),我不记得其他方法出了什么问题。
我的朋友(谁告诉我关于Pyinstaller)告诉我使用virtualenv,所以我查了一个关于这个问题的教程。 看起来我需要创build一个使用Python 3.5的虚拟环境。 所以这些是我在cmd中input的命令:
pip install virtualenv
mkdir Environments
cd environments
virtualenv -p C:\Users\hp\AppData\Local\Programs\Python\Python35\python.exe py35_env
(在input这个命令之前,我安装了Python 3.5.0)
C:\Users\hp\Environments\py35_env\Scripts\activate
现在环境已经被激活了,我在这个环境下pip install pyinstaller
,用pip install pyinstaller
。 然后,我将目录更改为: C:\Users\hp\Desktop\Code\Python testing
(这是vkv.py文件所在的位置)。 然后我input: pyinstaller vkv.py
,但是现在我得到了一大堆行,最后一行出现错误: ImportError: DLL load failed: %1 is not a valid Win32 application.
。 这是它的一个截图:
作为一个好奇的人,我想知道如果我打开另一个cmd窗口,并在没有环境的情况下再次尝试Pyinstaller会发生什么情况(所以我基本上尝试了上面列出的第一个方法)。 奇怪的是我得到了和前面一样的“ImportError”而不是“IndexError”。
所以现在我的问题是(从更重要到不太重要的排名):
pyinstaller vkv.py
在cmd里试过pyinstaller vkv.py
时发生了什么? 为什么它给了我一个ImportError,而不是IndexError,这是我第一次尝试运行这个命令时得到的? 对不起,这是一个很长的post,但我想提供大量的信息,因为我担心我可能会留下一些重要的东西。
预先感谢任何帮助!
正如你想要使用Python 3.6,你不能使用Pyinstaller,py2exe,cx_Freeze或其他。 但是,有一个名为Transcrypt的工具,它与Python 3.6兼容。 可以使用pip: pip install transcrypt
,并将Python代码转换为JavaScript。 要使用它打开控制台并输入transcrypt vkv.py
它会自动生成一个文件夹__javascript__
和文件。 当记录结束时,你已经准备好用html来使用它。
(假设.html与.py和文件夹在同一个目录中)
<html> <head> <title>Example</title> </head> <body> <script src="./__javascript__/vkv.min.js"></script> </body> </html>
您可以使用html作为可执行文件(取决于您的程序, 这里是文档 ),通过在浏览器中运行它。
尝试从python.org中删除3.6和安装3.5.3。
用Pyinstaller重试。
尝试使用py2exe,这是一个python模块。 它非常简单,所有你需要做的是:
下载并安装它http://sourceforge.net/projects/py2exe/files/
创建你的setup.py
运行你的setup.py
这是一个网站,将更详细地解释它http://inventwithpython.com/appendixc.html
我能够在我的Python 3.6环境中使用pyinstaller。 您需要下载开发版 (不稳定)的zip文件,而不是使用pip,从下载的pyinstaller代码运行setup.py文件。