1.ubuntu18.04下源码编译安装最新版本Python3
2.pytorch 源码解读进阶版 - 当你 import torch 的源码时候,你都干了些什么?(施工中)
3.python编译后的修订pyd爆破
4.阿里云主机源码编译安装python3常见错误处理
5.Linux离线Python源码编译及python版本升级
ubuntu18.04下源码编译安装最新版本Python3
在ubuntu.操作系统中,如果你希望安装最新版本的源码Python3,如3.7.3,修订且已有的源码Python3版本为3.6.7,可以通过源码编译的修订hishop 云商城 源码方式来完成。以下是源码详细的步骤:
首先,更新系统包并安装必要的修订构建工具,可以使用以下命令:
如果你担心记忆过多依赖包,源码Ubuntu会自动识别并安装相关包,修订简化了过程。源码
然后,修订从Python官方网站下载最新版本的源码源代码,这里以3.7.3为例,修订你可以选择wget命令手动下载,源码或者使用图形界面的浏览器下载。
下载后,解压源代码包,图形界面用户可以通过拖放操作来完成。
接下来,房产类app源码进入Python源代码目录,运行configure脚本进行系统检查,确保所有依赖已准备就绪。不过,--enable-optimizations选项可能导致构建过程变慢,但可以优化Python二进制文件。
启动构建过程,通过调整make命令中的-j标志来利用多核处理器,一般建议使用CPU核心数*2,这有助于提高效率,尽管这会增加构建时间。
构建过程可能耗时,保持耐心等待其完成。完成后,安装Python二进制文件时,应避免使用默认的make install,以防止覆盖系统默认的python3。
最后,你可以通过输入特定命令来验证Python 3.7.3的网页镜像访问源码安装情况,确认一切安装成功。
通过以上步骤,你将在ubuntu.上成功编译并安装最新Python3版本。记得每次有新版本发布,只要按照类似流程进行操作即可。
pytorch 源码解读进阶版 - 当你 import torch 的时候,你都干了些什么?(施工中)
使用PyTorch,无论是训练还是预测,你首先编写的代码通常如下所示:
依据Python代码的编写规则,导入逻辑将去相应的PyTorch site-package目录寻找__init__.py文件,具体路径为:${ python_path}/lib/python3.8/site-packages/torch/__init__.py
本章节聚焦于__init__.py 这个Python文件,从这里开始深入剖析,探究在一行简单的`import torch`命令背后,PyTorch是如何完成关键基础设置的初始化。
重点一:从`from torch._C import *`开始
在__init__.py 中,首先跳过一些系统环境的检查和判断逻辑,核心代码段为`from torch._C import *`,具体位置如下(github.com/pytorch/pytorch...):
这代表了典型的C++共享库初始化过程,遵循CPython代码组织规则,一米 源码`torch._C`模块对应一个名为PyInit__C的函数。在文件torch/csrc/stub.c中,找到了此函数的相关定义(github.com/pytorch/pytorch...)。
initModule被视为PyTorch初始化过程中的第一层调用栈,深入探讨此函数中的关键内容。
python编译后的pyd爆破
在探索一款基于Python3.8开发的特定应用协议软件时,我发现其关键功能模块已编译为pyd文件,且该软件通过pyinstaller进行打包,并要求用户输入授权码以激活功能。面对这种情况,我的目标是尝试破解该软件,尤其是针对pyd文件的逻辑,以实现绕过授权验证。为实现这一目标,我需要深入理解pyd文件以及如何修改其中的汇编代码。
在理解pyd文件前,我们先回顾一下其他相关文件的用途:
- py文件:Python源代码文件,包含未编译的脚本。
- pyc文件:py文件的个人资源分享源码字节码形式,用于提高加载速度。
- pyo文件:在优化模式下编译得到的字节码文件,通过`python -O file.py`生成。
- pyd文件:Windows平台上的动态链接库,用于Python的扩展模块。
通过使用`setup.py`文件和指定脚本文件(如uitl1.py),我们能编译出pyd文件。例如:
bash
cd setup.py所在的目录
python setup.py build_ext --inplace
生成的pyd文件支持位或位Python环境。
为了验证pyd文件的使用,我们可以编写一个测试脚本(test.py)导入pyd模块并调用其功能。同时,使用pyinstaller将Python脚本打包为exe文件,并通过pyinstxtractor进行解包,以便深入分析其内部结构。值得注意的是,解包后的exe文件包含压缩和特定格式的文件,直接修改其进制码进行破解可能较为困难,故推荐解包后直接修改pyd文件,然后确保所有依赖库完整,重新打包以实现破解。
在深入研究后,我发现了解pyd文件的关键在于掌握其与Python脚本的对应关系。通常,pyd文件中的主要导出函数会在其他py脚本中被调用进行模块初始化。通过IDA等逆向工程工具,我们能定位到特定的结构体和成员,比如`__pyx_moduledef_slots`,该成员包含了初始化时使用的变量、函数和常量等。通过查找这些元素的交叉引用,我们能逐步建立Python脚本和汇编代码之间的关联。
具体步骤包括:
1. 将pyd文件加载到IDA中。
2. 找到导出函数及其初始化逻辑。
3. 定位关键成员`__pyx_moduledef_slots`。
4. 分析常量和pyobject的对照表以及函数名与汇编函数的对应关系。
5. 根据表中的信息,快速定位到特定python函数对应的汇编实现。
6. 然后,通过修改汇编代码中的特定指令,如改变分支条件,来实现对执行逻辑的调整。
例如,若要修改某个if语句的执行路径,我们可以通过修改汇编代码中的跳转指令(如`jz`或`jnz`)来实现。完成修改后,使用IDA的编辑功能保存修改并应用到原始pyd文件中,即可得到修改后的可执行文件。
通过这种方式,我们不仅能够理解Python脚本与汇编代码之间的转换机制,还能灵活地调整执行流程,实现对特定功能的控制。尽管如此,值得注意的是,破解软件往往涉及复杂的反编译和逆向工程挑战,且可能触及法律界限。在进行此类操作时,应确保遵守适用的法律和道德规范,并尊重软件版权。本文提供的是技术分析和学习思路,目的在于促进理解而非鼓励非法行为。
阿里云主机源码编译安装python3常见错误处理
源码编译安装python3时,可能遇到的常见错误及其解决方法如下: 在运行应用时,可能遇到如下异常错误:import _ssl报错,ModuleNotFoundError: No module named '_ssl';从smtplib导入SMTP_SSL报错,ImportError: cannot import name 'SMTP_SSL' from 'smtplib';使用sqlite3数据库报错,django.db.utils.NotSupportedError: deterministic=True requires SQLite 3.8.3 or higher。 上述错误发生的原因通常是系统内置的软件工具版本与python解释器依赖的版本不匹配。例如,openssl1.0.2版本可能是阿里云主机默认安装的版本,而python3.可能要求更高的openssl版本。sqlite3数据库报错信息也明确指出内置的sqlite3版本不符合python3.的版本要求。 在python版本无法降级的情况下,解决这些问题的办法是升级对应工具的版本。但需要注意的是,升级后必须重新编译安装python3,否则问题仍然存在。接下来将详细介绍openssl升级、sqlite3升级、源码编译安装python3的步骤以及重新编译python3所需的清理命令。 具体步骤如下: 升级openssl版本:选择与python3.版本匹配的openssl1.1.1。 升级sqlite3版本:以sqlite3..3版本为例介绍升级步骤。 重新编译清理命令:假设python3源码包解压后存放在Python-3..0目录中,编译安装路径为/usr/local/python3.(路径根据实际情况调整)。重新编译安装清理操作命令如下: 具体源码编译python3.步骤如下:Linux离线Python源码编译及python版本升级
配置环境
初始化干净的centos7.8镜像,并搭建本地镜像源,详情可参考Linux 镜像源临时挂载+永久挂载+yum本地源制作 - 蜡笔小新的文章 - 知乎。
下载Python源码,版本选用Python-3.9..tar.xz。
编译Python
因高版本Python编译需高版本GCC,系统默认GCC版本为4.8.5,需先升级GCC。
执行Centos离线源码编译高版本GCC并升级教程:Linux Centos7.8.系统离线GCC源码编译升级 - 蜡笔小新的文章 - 知乎。
由于未安装make编译工具和依赖,需先执行yum -y install automake autoconf libtool make以完成安装。
编译Python源码至/opt/python3.9.,过程未出现错误。
升级Python版本
编译安装后,已将新版本安装至指定目录,但未升级原有Python版本。
通过ll /usr/bin/python查看,当前Python版本软链接指向/usr/bin/python2.7。
删除或备份当前Python软链接,避免影响yum工具。
修改yum工具文件路径,将“#!/usr/bin/python”更改为“#!/usr/bin/python2.7”。
最后,创建新编译Python3.9.的软链接及pip3软链接。
成功在Centos7.8上升级Python3.9.版本,同时确保原有yum工具可使用Python2.7版本。