Python:我能否在没有实际安装Python的情况下运行Python脚本?

33

我有一些写好的.py文件,想在另一台机器上运行。由于该目标机器没有安装Python并且政策不允许我进行安装,但我可以复制文件,运行我的代码,然后将它们删除。

我尝试的方法是将我的开发Python文件夹直接复制到目标机器上,并在Python文件夹下运行python.exe /path/to/.py/file。结果出现错误,显示python.dll未注册。如果我注册DLL,这可能会超出“违反政策”的线。

是否有任何方法可以在没有实际安装Python的机器上运行Python文件(现在正试图让py2exe工作,但这很痛苦)?

6个回答

16

我决定使用cx_Freeze

它创建了一个分发包,我只需将其复制并移动到目标机器即可。此外,与py2exe相比,它更易于使用;而且似乎仍在维护中(截至2011年3月10日),而py2exe的开发看起来不太活跃。


使用cx_freeze打包的脚本是否可以传递参数? - Pyd
截至2018年4月,cx_Freeze仍然得到支持。我遇到的唯一问题是示例中说要调用他们的自定义脚本(放置在Scripts\),而我不得不为文件添加“.py”扩展名,以便Windows 7识别并运行它。 - PfunnyGuy

9

编辑:便携式Python的开发已经停止。我将很快删除此答案。

可以试试便携式Python,这应该能满足你的需求。

截至2015年4月,当前版本为2.7.6和3.2.5。


1
看起来很有趣,但可能会成为一个阻碍因素,即它支持Python 2.5.4、2.6.1和3.0.1的三个版本。谢谢。 - eat
你的意思是你需要2.7.1或者3.1/3.2吗?我相信它们已经在开发中了。 - Tim Pietzcker
是的,对我来说是2.7.1版本,但我会继续关注那个网站。谢谢。 - eat
我现在使用的是2.7.1版本,所以我会关注它,但现在它对我没有帮助。我也在看cx_Freeze,但第一次尝试就遇到了问题。 - ccwhite1
该链接显示Portable Python不再开发。WinPython可能是一个可行的替代方案。 - Frank
@Frank:感谢您的建议。您应该将其发布为答案。 - Tim Pietzcker

7

看看PyInstaller吧。对于简单的应用程序来说,它比py2exe更易于使用。


2
使用Pyinstaller打包后,是否可以传递参数给脚本? - Pyd
1
@pyd 是的,当运行 pyinstaller --onefile -c myscript.py 时,您可以使用选项 -c - azalea

1

WinPython 可能是你需要的。它需要使用安装程序解压,但解压后的文件可以在任何机器上直接运行,无需安装。

截至2015年10月,它正在积极维护。


能否使用Winpython传递打包脚本的参数? - Pyd

0
这是一个老问题,但其中一种替代方案是为Python创建虚拟环境,可以像这样简单:python -m venv myenvname(Python 3.4)。您可以以正常方式(例如pip)“安装”软件包,而无需其他任何东西。最终您将得到一个文件夹,您可以随意移动/删除它。

移动venv文件夹并不能使其正常工作。您需要匹配发行版、操作系统等。 - Prometheus
好吧,糟糕。我想我运气不错。 - TheGerm

0

看起来 virtualenv 不允许您轻松地重新定位创建的虚拟环境文件夹。

请查看virtualenv用户指南。因此,将文件夹移动到其他位置可能无法正常工作。 您尝试过使用 virtualenv 的 relocate 选项吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接