python代码加密方法

代码加密方法

步骤一:安装 PyInstaller

首先,需要安装 PyInstaller。可以使用 pip 来安装:

bash
复制代码
pip install pyinstaller

步骤二:准备 Python 脚本

假设有一个名为 hello.py 的 Python 脚本,内容如下:

python复制代码# hello.py
def greet():
    print("Hello, World!")

if __name__ == "__main__":
    greet()

步骤三:使用 PyInstaller 进行打包

打开终端或命令提示符,导航到 hello.py 文件所在的目录,然后运行以下命令:

bash
复制代码
pyinstaller --onefile hello.py

其中步骤三如果我们的代码存在一些配置文件,确保在使用 PyInstaller 打包时将正确的文件和目录包括在内:

参数说明:

  • --onefile:将所有依赖文件打包成一个独立的可执行文件。
  • hello.py:要打包的 Python 脚本文件。

步骤四:查看输出结果

执行上述命令后,PyInstaller 会在当前目录生成两个文件夹 builddist,以及一个 hello.spec 文件。最终的可执行文件会在 dist 文件夹中。

目录结构可能如下:

scss复制代码.
├── build
│   └── ...
├── dist
│   └── hello (或 hello.exe,取决于操作系统)
├── hello.py
└── hello.spec

步骤五:运行可执行文件

导航到 dist 文件夹,然后运行生成的可执行文件:

bash复制代码cd dist
./hello      # 在Linux或MacOS上
hello.exe    # 在Windows上

运行结果应该是打印出 Hello, World!

如果编译后的代码不能执行

1. 了解 --add-data 参数

--add-data 参数用于指定在打包过程中包含的额外数据文件或目录。它的格式为:

bash
复制代码
--add-data "source_path:destination_path"
  • source_path: 要包含的文件或目录的路径(相对于当前目录)。
  • destination_path: 在打包后的应用中的目标路径。
2. 示例用法

假设你的项目结构如下:

arduino复制代码project/
│
├── your_script.py
└── ultralytics/
    └── cfg/
        └── default.yaml

如果 default.yaml 文件在 ultralytics/cfg/ 目录下,你可以通过以下命令将其添加到打包中:

在 Linux 或 MacOS 上:

bash
复制代码
pyinstaller --onefile --add-data "ultralytics/cfg/default.yaml:ultralytics/cfg" your_script.py

在 Windows 上:

bash
复制代码
pyinstaller --onefile --add-data "ultralytics/cfg/default.yaml;ultralytics/cfg" your_script.py

解释:

  • --add-data "ultralytics/cfg/default.yaml:ultralytics/cfg": 将 default.yaml 文件添加到打包中的 ultralytics/cfg 目录。
  • your_script.py: 你的主脚本文件。
3. 处理文件路径

在打包后的应用中,文件路径可能会有所不同。使用以下代码来确保在打包后的应用中能够正确访问这些文件:

python复制代码import os
import sys

def resource_path(relative_path):
    """获取打包后路径的资源文件"""
    try:
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

# 使用 resource_path() 来访问文件
file_path = resource_path('ultralytics/cfg/default.yaml')
4. 完整示例

假设你的 Python 脚本 your_script.py 内容如下:

python复制代码import os
import sys

def resource_path(relative_path):
    """获取打包后路径的资源文件"""
    try:
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    return os.path.join(base_path, relative_path)

def read_config():
    config_path = resource_path('ultralytics/cfg/default.yaml')
    with open(config_path, 'r') as file:
        data = file.read()
    print(data)

if __name__ == "__main__":
    read_config()

然后使用以下命令进行打包:

在 Linux 或 MacOS 上:

bash
复制代码
pyinstaller --onefile --add-data "ultralytics/cfg/default.yaml:ultralytics/cfg" your_script.py

在 Windows 上:

bash
复制代码
pyinstaller --onefile --add-data "ultralytics/cfg/default.yaml;ultralytics/cfg" your_script.py

总结

使用 --add-data 参数时,确保指定正确的源路径和目标路径,并在代码中处理打包后的文件路径。这样可以确保配置文件在打包后的应用中被正确找到和使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值