首页 > 编程语言 >win7+Python3.7+Cython +pyinstaller 打包方法

win7+Python3.7+Cython +pyinstaller 打包方法

时间:2022-11-27 11:08:44浏览次数:72  
标签:Cython exe False x86 python py win7 Program pyinstaller


1.Cython 安装 (将py编译成pyd,避免反编译)、pyinstaller 安装

pip install  cython

pip install pyinstaller

 

2.cython使用

建立编译脚本

#!/usr/bin/python
# -*- coding: utf-8 -*-
# build_pyd.py
#
# Copyright (C) 2019 - xulong <[email protected]>
#

from distutils.core import setup
from Cython.Build import cythonize

setup(
name = 'any words.....',
ext_modules = cythonize(["HongshangWeixinHelper.py","WeiXin_App_Helper.py",
]
),
)

执行编译脚本:
python build_pyd.py build_ext --inplace

问题就出在执行脚本这了,因为 cython 的编译是 把python脚本转为 C++ 代码,然后用c++编译器来编译的,所以前提系统要有c++编译器可调用。否则会报错,缺少  vcvarsall.bat 文件。

我安装了 ​​​​Visual C++ Build Tools 2015​(不想装ide,太大了,因此后面还要付出很多尝试),再执行上面命令,报缺少  cl.exe文件,这个应该是找不到路径问题,找到 cl.exe  所在目录,把它 加到环境变量 path 里。后面还会一直报缺少各种 .h 文件,.lib文件,这都是vc++编译时和链接时要用到的头文件和库文件。如果是IDE,会在项目里配置这些的。 

找到python的编译配置文件 C:\Python37\Lib\distutils\msvc9compliler.py 里面看到,它大概也就是从各地找到相应的文件目录来组成 编译命令的。

win7+Python3.7+Cython +pyinstaller 打包方法_ico

看它用到了系统的环境变量include 和 lib ,那我这就简化,把需要的 .h 头文件的目录 都加入 include  环境变量,把需要的.lib 目录都加入 lib 环境变量里。然后不断去试,缺了就加就行了。(参考:​https://docs.microsoft.com/en-us/cpp/build/setting-the-path-and-environment-variables-for-command-line-builds?view=vs-2017&nbsp​​     CL 确实是需要配置相应的环境变量的。

win7+Python3.7+Cython +pyinstaller 打包方法_ico_02

 

后面能正常把 py 编译成 pyd 文件了。  pyd 文件相当于 dll 文件, 使用时在 .py 文件里把它当模块引入。

3.使用pyinstaller 打包。

pyinstaller HongshangWeixinHelper.spec

Pyinstaller 有bug ,在处理中文路径名时有问题。

#HongshangWeixinHelper.spec 文件格式如下:

a = Analysis(['main1.py'],
             pathex=[],
             binaries=[],
             datas=[('icon.ico', '.'),('cacert.pem','.')],
             hiddenimports=['wx','xlrd','WeiXin_App_Helper','json','requests','time'], #当用了cython 转为pyd模块里的引用,不会自动打包进来,需要在这添里
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)

#注: 这种模式是将脚本打包到exe,其它文件做为单独文件,供exe调用,形成一个目录。
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='HongshangWeixinHelper',
          debug=False,
          strip=False,
          upx=True,
          console=False )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='wxgzt')

#注: 这种模式是将所有文件打包到exe,exe执行时会释放其它文件到临时文件夹,以供调用。
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='HongshangWeixinHelper',
          debug=False,#True可以看到误提示
          strip=False, 
          upx=True,
          console=False , #True可以看到cosole

             icon='icon.ico')

 

--------------------------------------------------------------------------------------------------------------------------------------------

我的环境变量设置 (只在命令行测试,常用的话还是加至系统环境变量去):

set PATH=%path%;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Windows Kits\8.1\bin\x64\;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\
set include=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;C:\Program Files (x86)\Windows Kits\8.1\Include\shared\
set lib=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64\;C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64\

我的python版本:

D:\2.DEVELOP\python\HongshangWeixinHelper.py3>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

 

 

MacOS 下安装:

直接用 pyenv  装 python

env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.8.0

cython 和 pyinstaller  在相应的虚拟环境下直接用  pip install

 

PS: mac pyenv install python 时一定要加上 env PYTHON_CONFIGURE_OPTS="--enable-framework", 否则会有很多坑,pyinstall可能打包了就是不能运行, wxpython 应用下面报错

This program needs access to the screen. Please run with a

Framework build of python, and only when you are logged in

on the main display of your Mac.

 

 

国内的几个Python镜像下载地址:
​​​ https://pypi.tuna.tsinghua.edu.cn/simple​​​ http://mirrors.aliyun.com/pypi/simple/
http://pypi.douban.com/simple/
https://mirrors.ustc.edu.cn/pypi/web/simple/

使用pip通过镜像安装第三方库的方法:
 

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  pyinstaller

标签:Cython,exe,False,x86,python,py,win7,Program,pyinstaller
From: https://blog.51cto.com/fangkailove/5889817

相关文章

  • Win7+IIS7下用FastCGI模式配置PHP环境
    今天看中了个PHP的程序想本地调试,因为我用的是WIN7的系统和自带的IIS7,又不想去下载apache服务器,记得以前看过让IIS支持PHP的方法,是使用isapi方式加载的,听说现在php5.3已经......
  • Win7上Git安装及配置过程 [转]
    文档名称Win7上Git安装及配置过程创建时间2012/8/20修改时间2012/8/20创建人Baifx简介(收获)1、在win7上安装msysgit步骤;2、在win7上安装TortoiseGit步骤;3、在VS2010中集成Gi......
  • pyinstaller打包exe快速上手
    pyinstaller快速上手参考网址https://blog.csdn.net/NBDwo/article/details/115429859安装pipinstallpyinstaller参数说明(注意区分大小写)-i给应用程序......
  • win10和win7设置教程
    win10设置教程1.点左下角齿轮这个设置2.点网络和internet 3.点dai理 4.复制粘贴发您pac结尾的链接到url里面就行,最后保存。     ================......
  • VSCode For Win7
    原本地址是:https://update.code.visualstudio.com/1.70.2/win32-x64/stable实际地址:https://az764295.vo.msecnd.net/stable/e4503b30fc78200f846c62cf8091b76ff554766......
  • Cython directive 'language_level' not set, using 2 for now (Py2)
    如果你期望编译的版本不是python2,那就指定自己要用哪个版本编译,或者在每个要编译的版本.py文件顶上添加一行指定cython版本,但如果有成千上成个.py或.pyx文件,就不好处......
  • 【Python零基础入门篇 · 41】:内置模块的使用二:pyinstaller模块(打包py文件以及更换图
    pyinstaller模块pyinstaller是第三方模块,需要在Terminal输入命令安装:pipinstallpyinstaller步骤演示在Day18.py文件下写入代码在cmd或Terminal找到文件进行打包。......
  • python 代码打包成可执行文件 pyinstaller
    1.打包为一个目录pyinstaller-Dxxx.py2.打包为一个文件pyinstaller-Fxxx.py打包过程中会生成一个xxx.spec文件,如果有自定义的引用,可以修改这个文件,然后执......
  • Python 扩展模块Cython安装及使用
    ​Cython是一种通过python语法编写C扩展的编程语言,源代码可被翻译成优化的C/C++代码并编译成Python扩展模块。 Cython使得Python语言的C扩展与Python一样简单。本文主要......
  • Win7 系统如何回退到 xp 系统
    Windows系统中最常用的便是winxp系统,它拥有全新的图形界面,通过它,用户可以使用任何工具访问系统中的任何任务细节。这款系统拥有防火墙,可以帮助我们预防病毒的入侵。而......