python 文件编译
python3编译成pyc文件pyc是编译py之后生成的本地文件。 一般当我们想发布系统的时候不想让别人看到源代码,所以要提前生成pyc文件。
# -*- coding: utf-8 -*-
#python之模块py_compile用法(将py文件转换为pyc文件);二进制文件,是由py文件经过编译后,生成的文件.
#办法一:
import py_compile # 编译指定py文件
import compileall as ca # 编译指定目录下的py文件
# 将d盘xxx\xx目录下所有源码文件编译
# ca.compile_dir(r'E:\ldtools\ide\workspace\ExcelMysql\ttep')
#加r前缀进行转义
py_compile.compile(r'E:\ldtools\ide\workspace\ExcelMysql\ttep\setConfig.py') #py文件完整的路径.
# py_compile.compile('setConfig.py') #py文件完整的路径
print('完成')
打包成exe文件
安装环境包
安装pyinstaller:在命令行中运行以下命令
pip install pyinstaller
--打包
pyinstaller -F -w -i 图标名.后缀 源文件.py
Pyinstaller -F -w one.py
或
pyinstaller -F -w -i 图标.pig one.py
--noconsole 执行后不显示命令行窗口
pyinstaller --noconsole --onefile --add-data "瞬间的永恒.mp3;." heart.py
在Python中可以使用pyinstaller将所有依赖打包成exe文件。步骤如下:
cd到你的Python程序所在目录
使用以下命令来构建exe文件:
pyinstaller --onefile your_program.py
其中,--onefile参数表示将所有依赖打包成一个exe文件。如果你想要将依赖打包成多个文件,可以使用--onedir参数。
构建完成后,在dist目录中会生成exe文件。
注意:如果你的程序使用了一些外部文件(如配置文件或图片等),需要将这些文件一同打包。可以使用--add-data参数来指定需要打包的文件,例如:
pyinstaller --onefile --add-data "config.ini;." your_program.py
其中,"config.ini;."表示将当前目录下的config.ini文件打包,并将其放到exe文件所在目录中。
打包后找不到MP3
打包后找不到MP3
如果你在使用打包后生成的exe文件时,出现了找不到某个MP3文件的情况,这可能是因为在打包时没有将该文件包含在exe文件中。
可以尝试使用
--add-data
参数在打包时指定要打包的MP3文件。例如,假设你的Python程序依赖了
mymusic.mp3
文件,你可以使用以下命令来打包,并将
mymusic.mp3
文件包含在exe文件中:
pyinstaller -F --add-data "mymusic.mp3;." your_program.py
同时,在你的Python程序中,你可以使用
os.path.join()
来构造正确的MP3文件路径。例如,在上面的例子中,你可以使用以下代码来加载mymusic.mp3:
```py
import os
import pygame
# 获取程序所在目录
dir_path = os.path.dirname(os.path.abspath(__file__))
# 加载MP3文件
music_file = os.path.join(dir_path, 'mymusic.mp3')
pygame.mixer.music.load(music_file)
# 开始播放音乐
pygame.mixer.music.play()
# 循环播放
while True:
if not pygame.mixer.music.get_busy():
pygame.mixer.music.play()
这样就可以确保程序可以正确地加载MP3文件并正常工作了。注意,在使用
os.path.join()
来构造文件路径时,要使用
os.path.abspath(__file__)
获取程序文件的绝对路径,然后使用
os.path.dirname()
来获取该文件所在的目录。这样可以确保程序可以在任意路径下运行,而不受当前工作目录的影响。
```py
import os
import pygame
#播放音乐
print('播放音乐')
# 获取程序所在目录
dir_path = os.path.dirname(os.path.abspath(__file__))
# 加载MP3文件
music_file = os.path.join(dir_path, '瞬间的永恒.mp3')
#pygame.mixer.music.load(music_file)
pygame.mixer.init()
pygame.mixer.music.load(music_file)
pygame.mixer.music.set_volume(0.5)
pygame.mixer.music.play(loops=-1) # 播放次数-1是无限次数
使执行exe后的cmd窗口 不显示
session default avatar
如果你在使用
pyinstaller
打包Python程序成exe文件时,出现了弹出命令行窗口的情况,这是因为默认情况下
pyinstaller
会在程序执行时打开一个控制台窗口。
你可以使用以下两种方法来禁止生成控制台窗口:
1. 使用
--noconsole
参数
使用
--noconsole
参数告诉
pyinstaller
在打包应用程序时不使用控制台窗口。你可以使用以下命令来打包应用程序:
pyinstaller --noconsole your_program.py
在spec文件中添加控制台窗口禁用选项
如果你使用了
pyinstaller
的spec文件来打包你的应用程序,你可以在spec文件中添加以下选项来禁止控制台窗口:
python
copy_svg
复制
a = Analysis(['your_program.py'],
pathex=['.'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[])
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
[],
name='your_program',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False <--- 在这里添加控制台窗口禁用选项
)
在
EXE
构造函数中,添加
console=False
参数来禁止控制台窗口。
使用这两种方法之一,就可以禁止程序在执行时弹出控制台窗口。