- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在寻找freeze.py
实用程序,该实用程序应该在Python 3.3 Windows安装中随Python 3捆绑在一起(尽管已安装distribute
和pip
),但没有找到它。该实用程序可以直接从Python svn存储库here中下载,但是我想知道:freeze
是否附带标准的Windows Python 3安装?
最佳答案
看起来Python的Windows二进制安装没有提供freeze
工具。显然有一个很好的理由。根据源树中的freeze
README:
在Windows 95或NT下,必须使用-p选项并将其指向Python源代码树的顶部。
如果您阅读了整个章节,则可以归结为:在Windows上,freeze
仅在您从源代码构建Python并将生成的树用于冻结时才有效。因此,没有充分的理由在二进制安装中给您freeze
。
同时,我可能应该首先问这个问题,但是……您确定首先要freeze
吗?
冻结实用程序已经过时了(您可能已经从自述文件中猜测到有关要求VC ++ 5.0,Windows 95或NT 4.0等的信息)。它在Windows上也从未如此有效(如您从documentation所描述的那样,将其描述为实用程序“…为Unix系统编译可执行文件”)。而且它有很多无法处理或处理不善的地方。在这一点上,应该将其更多地视为示例代码,而不是有用的工具。
那里有许多第三方替代品:cx_freeze
,py2exe
,PyInstaller
等。如果您选择search PyPI for "freeze"(以及其他合理的术语),则会找到许多此类替代品。如果您的目标是用Python脚本创建一个独立的可执行文件(btw,freeze
永远无法在Windows上运行),请尝试其中的一些,然后选择最喜欢的一个。
如果您的目标有所不同,那么正确的工具也会有所不同-使用venv
或仅压缩用户site-packages目录或创建本地PyPI服务器可能会更好。
在评论中,您说:
我实际上正在寻找的是一种将Python代码转换为C代码的工具。显然,那是不可能的。
这不是不可能的,这不是freeze
(或其后继者/竞争对手)所做的。 Cython几乎将Python的严格超集编译为C代码,尽管它是使用Python运行时对象的C代码(除非您明确地静态声明C类型的变量和函数)。如果C ++可以替代C,则Shed Skin编译Python 2.6的受限子集(使用本机C ++对象,并使用类型推断,因此您不必静态声明类型)。
问题是为什么要将Python代码编译为C。
如果您想优化一些慢速代码,Cython可以很好地加快瓶颈代码的速度。这需要一些努力(确定要移到Cython的内容,要放入的静态类型声明等),但是付出努力的回报却很坚实。 Shed Skin的工作量要少得多(如果可以工作,它会自动加速一切),但这也意味着您一开始就不能编写很多惯用的Python代码。但是,实际上,在查看任何一个之前,您都应该考虑PyPy,它是在JIT编译解释器中的Python 2.7.3的完整实现(并希望不久后实现3.3),它通常提供类似的加速,几乎没有任何取舍。或者,您也可能只需要重写慢速代码即可利用已优化的库(numpy
而不是在列表上映射,itertools
而不是显式循环,lxml
而不是html.parse
,...)。
如果您希望编写可以直接与C代码进行交互的Python代码,而又不会遇到ctypes
的所有麻烦(或手动构建Python绑定),Cython会再次得分。 Cython代码可以有效地本地调用Python代码和C代码,并且编译器使它们都像魔术一样工作。
如果您希望获得可以阅读,维护和改进的C代码,那么您就不走运了。实际上,这可能是不可能的。惯用的Python代码与惯用的C代码是如此不同,以至于很难想象如何将一个代码转换为另一个代码。
如果您想知道潜在的问题是什么:
据我所知,freeze
对事物的布局有很多假设。任何可以安装C扩展模块和嵌入应用程序的Python安装都应该足够了,但事实并非如此,因为freeze
处于幕后,并希望该构建能够以特定方式工作。几乎每个* nix平台上的标准二进制安装最终看起来都像freeze
预期的那样,但是Windows上的标准二进制安装看起来却完全不同。
使用Windows符号链接(至少如果您具有Vista或更高版本以及具有现代版本的NTFS的驱动器)进行黑客入侵并非不可能,以使所有内容都按freeze
的方式组织(我找到了一个博客,其中有人使用2.7做到了这一点) .1…),但实际上,我认为不值得尝试。这将需要很多工作(特别是如果您只是在学习这些东西),并且不能保证您不会立即遇到另一个问题。
*实际上并非如此。在Mac上,Apple的预装Python和python.org上的二进制安装程序实际上都为您提供了组织为Mac框架的文件-但它们提供了许多模拟传统布局的符号链接,这已经足够了。在大多数Linux发行版和许多其他平台上,二进制python软件包根本不包含任何开发文件,但是一旦您安装了名为python-devel之类的附加二进制软件包,便可以正确使用布局。无论如何,这对您都不重要,因为如果您想了解dpkg依赖项或框架构建,就不会使用Windows,对吗?
关于python - Python的freeze.py未安装在Windows上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199613/
我使用的是 Windows 8.1 和 Python 2.7,我在特定文件路径中设置了所有文件(希望正确),但每当我运行 python manage.py runserver 时,我都会收到此错误。
背景: 我有一个像这样的目录结构: Package/ setup.py src/ __init__.py __main__.py cod
我从这个线程运行了一个示例代码。 How to properly use coverage.py in Python? 但是,当我执行此命令时 py.test test.py --cov=sample
IPython 0.13.1 文档说: $ ipython -h ... Usage ipython [subcommand] [options] [files] If invoked
我写了一个网站,让我困惑的是当我运行这个网站时,首先我需要启动应用程序,所以有 3 种方法: sudo python xxx.py python xxx.py xxx.py 每一个我都不清楚怎么用,目
我不确定为什么它不起作用,这可能是一个您无法解决的问题,但我只是想知道为什么它不起作用。如果我浪费了您的时间,或者没有正确地提出问题,我很抱歉,我 16 岁,对 Python 还算陌生。 在main.
鉴于以下情况:models.py from .managers import PersonManager from django.db import models class Person(model
有没有办法将参数传递给 web.py 处理程序类构造函数? 例如。这些参数可能来自命令行(当主 web.py 脚本运行时),在第一个参数(作为端口号)之后 最佳答案 当然,这取决于你的意思。毕竟都是p
我对 python/django 编程很陌生,因为我没有编程背景。我正在在线上课,我只想确切地知道 manage.py 文件的作用。我试过用谷歌搜索它,但除了在 django-admin.py 周围放
我想将类别及其子类别保存到数据库中,这里每个类别都有多个子类别。您能帮我保存与类别相对应的用户、类别和多个子类别吗?Models.py、Serializers.py、Views .py 并附加传入请求
所以我的机器人开始有很多命令,并且在 main.py 上变得有点困惑。我知道有一种方法可以将命令存储在其他文件中,然后在 discord.js 上触发它们时将它们应用于 main.py。在 disco
我正在尝试制作一个类似于 mee6 的 Discord 机器人,因为它会按特定时间间隔计算用户在我的 Discord 服务器中发送的消息。我已经在网上搜索过,但即使有类似的问题也找不到我要找的东西。例
我正在尝试制作一个机器人,它根据特定 channel 中的消息创建线程。如果有在 discord.py 中的文本 channel 中创建线程的方法,请告诉我。 最佳答案 是的,但有一个问题。 当前版本
我一直在尝试制作一个命令来显示一些信息,然后当我对表情使用react时,它应该会显示另一组信息。 我尝试使用 this 的部分内容,特别是第 335 到 393 行的部分让它工作。但是,它什么也不做。
这是我试过的代码: @client.event async def on_message(message): if client.user.mention in message.content
我试过这段代码,机器人说猜但没有回应我的猜测。 @commands.command() async def game(self, ctx): number = random.randint(0
我决定尝试让我的不和谐机器人播放音乐,但我已经卡住了。主要是因为我找不到任何资源来帮助当前版本,我一直在从文档中获取所有内容。但是,我不知道如何检查机器人是否已连接到语音 channel 。 我试过
我在一个目录中有三个文件: # Untitled-1.py print("UTITLEDPY") if __name__== "__main__": from telegram.ext imp
我对 python 相当陌生,并且一直只使用 Jupyter Notebooks。当我需要运行我已保存在计算机中某处的 .py 文件时,我通常所做的就是使用魔术命令 %run %run '/home/
我有 Django 1.4 和 Python 2.6.6当我使用“django-amdin.py startproject djproject”时,请按照网页中的步骤操作 https://www.ib
我是一名优秀的程序员,十分优秀!