婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python .py生成.pyd文件并打包.exe 的注意事項說明

Python .py生成.pyd文件并打包.exe 的注意事項說明

熱門標簽:遼寧智能外呼系統需要多少錢 舉辦過冬奧會的城市地圖標注 400電話申請資格 螳螂科技外呼系統怎么用 正安縣地圖標注app qt百度地圖標注 地圖地圖標注有嘆號 電銷機器人系統廠家鄭州 阿里電話機器人對話

最近用python寫了一個小程序,想發布出去讓人試用又不想暴露源碼,搜索了一下發現將py文件編譯成pyd文件就能達到目的。

轉換過程很簡單,但是在調用pyd文件并且打包為單個exe文件的時候遇到一個坑,搞了一天才解決,在這里分享一下。

首先安裝cython庫

個人比較喜歡用清華的鏡像庫,速度快。

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

然后創建一個setup.py文件

寫入以下內容:

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize("BetaV14.py"))

BetaV14.py就是要轉換為pyd文件的代碼文件

命令行輸入:

python setup.py build_ext --inplace

會在.py文件目錄下生成一個BetaV14.cp37-win_amd64.pyd文件,文件名中“.cp37-win_amd64”這一段可以刪除,不刪除也可以正常調用;但原文件名字段不能改變。

接下來需要打包發布為.exe文件

我用的是pyinstaller,還是用清華鏡像庫安裝。

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

根據一些教程,有的說在命令行直接輸入:

pyinstaller -F BetaV14.py

就能直接引用pyd文件打包發布exe文件,但是在我這里出現文件缺失的錯誤:

ValueError: Module file F:\python項目1\BetaV14.py is missing

繼續查找問題,發現需要用一個入口程序來導入pyd文件,于是創建一個main.py文件,import剛才生成的模塊,pyd文件默認優先級高于py文件,可以在后面解包exe文件來驗證。

import BetaV14
if __name__ == '__main__':
 BetaV14()

這里需要注意的是程序的__main__入口只能有一個,如果源py文件中有定義main入口,需要注釋掉并調整代碼縮進,否則通過main.py調用pyd文件遇到if name == ‘main':之后的代碼都不會運行。

接著命令行輸入:

pyinstaller -F main.py

打包成.exe文件,在dist目錄下發現main.exe文件大小只有5M,之前采用py文件打包的程序有接近50M,運行之后閃退。這個問題想了半天才想出來,可能是引用了大量的第三方庫沒有打包進去,于是將源py文件頭部import部分全部復制到main.py文件頭部。

import win32gui
import win32api
import win32con
import time 
import random
import datetime
import os,sys
import configparser
import numpy as np
from PIL import Image
from scipy.signal import convolve2d
import http.client
import subprocess
import BetaV14
if __name__ == '__main__':
 BetaV14()

再次用命令pyinstaller -F main.py打包,得到正常大小的.exe文件,點擊能正常運行。

接下來我們用pyinstxtractor.py(不清楚該腳本是否涉及著作權,請自行搜索)解包exe文件驗證一下,命令行輸入:

python pyinstxtractor.py main.exe

會得到一個main.exe_extracted文件夾,在文件夾下發現文件BetaV14.pyd,說明通過引用pyd文件打包成功。

在此作為一個初學者記錄一下自己遇到的坑,讓大佬們見笑了。

補充:python打包編譯成pyd或者_python之setup.py的那些事

今天偶然對setup.py產生了興趣,以前只知道可以用它來安裝包,例如

python setup.py build ->python setup.py install.當然前提你下載的這個源碼包是壓縮的,之前對這個理解并不深,今天偶然看見pip install -e . 的用法,然后串起來想了一下。

我的目錄結構如上,首先我創建了一個setuptutorial的directory,然后我在下面創建了greet_pkg的python package,并且在setuptutorial下面創建了setup.py如下

from setuptools import setup, find_packages
 
setup(
 name='greet',
 version='1.0.0',
 packages=find_packages(include=['greet_pkg', 'greet_pkg.*']),
 url='',
 license='uestc',
 author='jack',
 author_email='2444093230@qq.com',
 description='test package',
 py_modules=['greet2'],
 install_requires=['pyjokes']
)

greet2.py如下

def greet2(name):
 print(
 'hello',name,'this is greet2'
 )

在greet_pkg下面下了一個greet.py如下

import pyjokes
def greet(name):
 print('hello!', name, f'im telling you a joke {pyjokes.get_joke()}')

整體目錄結構和setup.py就如上所示

接下來好戲開場了,如果我要在任意其他文件里面使用到我定義的greet()方法,以前的做法是按照import規則在其他文件里面導入,當然如果寫的不規范,及其的容易出問題,這里我提供另外一個思路,在setuptutorial下面使用pip install -e . 命令,將setup.py里面包含的package和py_module安裝到Libary root下,當然他的實際的location不是在Libary root下,這個你可以在pip install -e . 之后使用pip show greet 查看他的信息.

到這里就完了嗎?

當然沒有,這個就是之前的python setup.py build 的作用,我這里猜測大概率是把tar.gz包轉化成我上述的目錄結構一樣的directory。

而python setup.py install 的作用就類似于pip install '-e' . 。而且python setup.py install 之后的greet包是真的存在于sitepackages里面的。

setup.py除了上述安裝包的作用,還可以是他的逆過程如 python setup.py sdist 成greet.tar.gz,這樣就有上述的裝包的過程先build再install。

還可以使用setup.py將py文件轉化為pyd,也可以說將pyx文件轉化為pyd,

from setuptools import setup
# from distutils.core import setup
from Cython.Build import cythonize
 
# setup(
# name='hello',
# ext_modules=cythonize(['sayhi.py'])
# )

然后運行python setup.py build_ext --inplace就可以了!

pyd文件可以很好的隱蔽py文件里面的實現,和linux下的so文件類似。

有類似py->pyd功能的有easycython模塊,可以直接pip安裝。

有人可能會說pyc也看不見源碼嗎?

但是他可以被反編譯23333

至于如何將py編譯成pyc或pyo

可以使用py_compile或者compileall,不了解的可以自行搜索一下,都有很多的例子,還有針對pyc的反編譯庫,都可以搜到,至此setup.py我所了解的功能都談完了,里面還有很多參數可以靈活配置,實現更加炫酷的效果可以查看這個鏈接setup.py

您可能感興趣的文章:
  • Python打包為exe詳細教程
  • Python打包exe時各種異常處理方案總結
  • 將Python代碼打包成.exe可執行文件的完整步驟
  • 如何利用pyinstaller打包Python程序為exe可執行文件
  • python腳本打包后無法運行exe文件的解決方案
  • 解決python 打包成exe太大的問題
  • Python實現圖片指定位置加圖片水印(附Pyinstaller打包exe)
  • Python三種打包exe方法案例教程

標簽:淘寶好評回訪 濟源 昭通 信陽 隨州 興安盟 阜新 合肥

巨人網絡通訊聲明:本文標題《Python .py生成.pyd文件并打包.exe 的注意事項說明》,本文關鍵詞  Python,.py,生成,.pyd,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python .py生成.pyd文件并打包.exe 的注意事項說明》相關的同類信息!
  • 本頁收集關于Python .py生成.pyd文件并打包.exe 的注意事項說明的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美久久一二区| 成人黄色国产精品网站大全在线免费观看 | 亚洲444eee在线观看| 91精品国产色综合久久ai换脸| 亚洲一区二区三区视频在线播放| 91啪九色porn原创视频在线观看| 亚洲三级在线免费| 成人一级视频在线观看| 亚洲一区二区视频在线观看| 精品粉嫩超白一线天av| 成人看片黄a免费看在线| 亚洲成人免费影院| 中文乱码免费一区二区| 日本高清不卡视频| 欧美妇女性影城| 国产69精品一区二区亚洲孕妇| 色婷婷av一区二区三区软件| 久久免费的精品国产v∧| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲va天堂va国产va久| 国产麻豆精品95视频| 欧美一卡二卡三卡| 人妖欧美一区二区| 成人高清伦理免费影院在线观看| 欧美大度的电影原声| 一区二区三区日韩欧美精品| 亚洲国产美国国产综合一区二区| 亚洲精品成人精品456| 国产一区二区三区四| 日韩视频在线观看一区二区| 成人精品国产福利| 精品国产伦一区二区三区观看体验| 欧美变态tickle挠乳网站| 奇米色777欧美一区二区| 国产乱码字幕精品高清av| 香蕉av福利精品导航| 国产精品久久99| 粉嫩在线一区二区三区视频| 久久你懂得1024| 在线成人免费视频| 亚洲精品视频一区| 在线观看91精品国产麻豆| 久久精品免费在线观看| 中文字幕免费一区| 久久精品国产成人一区二区三区| 538prom精品视频线放| 亚洲亚洲人成综合网络| 国产精品1区2区| 色婷婷综合中文久久一本| 美日韩黄色大片| 中文字幕一区二区5566日韩| 欧美一区二区三区婷婷月色| 欧美视频中文字幕| 极品瑜伽女神91| 免费视频最近日韩| 午夜精品视频一区| 午夜精品福利在线| 亚洲综合免费观看高清完整版| 五月婷婷综合在线| 欧美一区二区在线免费观看| 国产精品一二三区| 日本一区二区视频在线观看| 在线观看成人小视频| 国产一区二区三区在线观看免费视频 | 99re视频这里只有精品| 麻豆91精品91久久久的内涵| 亚洲一本大道在线| 亚洲bt欧美bt精品| 国产情人综合久久777777| 91精品国产综合久久精品性色| 91麻豆国产精品久久| 成人免费视频免费观看| 亚洲v中文字幕| 亚洲午夜精品网| 亚洲.国产.中文慕字在线| 制服丝袜亚洲精品中文字幕| 精品无码三级在线观看视频| 国模娜娜一区二区三区| 麻豆精品精品国产自在97香蕉| 老司机一区二区| 亚洲欧洲综合另类在线| 日韩免费观看高清完整版在线观看| 成人激情免费网站| 久久97超碰色| 亚洲欧美综合色| 欧美日韩亚洲丝袜制服| 懂色av一区二区在线播放| 国产精品亚洲人在线观看| 免费观看久久久4p| 肉色丝袜一区二区| 久久久久久久久久久久电影| 日韩一区二区免费在线电影| 欧美日高清视频| 偷拍亚洲欧洲综合| 色综合天天在线| 欧美性生活一区| 日韩一级片在线观看| 99久久精品免费精品国产| 一区二区三区不卡视频| 精品视频一区二区三区免费| 中文一区二区完整视频在线观看| 欧美日韩中文另类| 国产99精品在线观看| 婷婷六月综合亚洲| 国产精品影视在线观看| 日本欧美加勒比视频| 天堂av在线一区| 亚洲国产日韩综合久久精品| 不卡视频一二三四| 国产自产v一区二区三区c| 韩国成人在线视频| 午夜免费久久看| 久久成人羞羞网站| 精品播放一区二区| 欧美剧在线免费观看网站 | 欧美不卡一区二区| 久久先锋影音av鲁色资源网| 国产色产综合产在线视频| 国产iv一区二区三区| 九九热在线视频观看这里只有精品| 91国产丝袜在线播放| 欧美日韩精品一区二区天天拍小说| 欧美美女bb生活片| 日韩欧美黄色影院| 国产欧美精品一区aⅴ影院| 亚洲国产精品传媒在线观看| 中文字幕一区二区三区在线不卡| 91小视频免费看| 欧美在线你懂得| 国产一区二区三区免费| 免费成人在线播放| 国产一区二区91| 久久 天天综合| 91片在线免费观看| 欧美成人福利视频| 国产精品毛片高清在线完整版| 免费高清在线一区| 国产日韩成人精品| 亚洲va欧美va人人爽午夜| 成人永久免费视频| 欧美日本一区二区在线观看| 久久久久久97三级| 国产大陆a不卡| 欧美一级日韩免费不卡| 亚洲综合免费观看高清完整版在线| 欧美精品一区二区在线播放| 久久夜色精品国产噜噜av| 亚洲一卡二卡三卡四卡五卡| 精品99一区二区| 欧日韩精品视频| 国内精品免费在线观看| 欧美视频中文字幕| 亚洲欧美在线视频观看| 亚洲一区欧美一区| 99精品在线免费| 日韩亚洲电影在线| 欧美激情一区二区三区| 在线视频国内自拍亚洲视频| 韩日精品视频一区| 久久久激情视频| 成人污视频在线观看| 福利91精品一区二区三区| 国产日韩精品一区二区浪潮av| 日韩影院在线观看| 91麻豆免费观看| 日本欧美在线看| 欧美三级中文字| 91在线观看污| 日韩国产在线一| 在线看不卡av| 日韩国产高清影视| 国产欧美精品一区二区色综合朱莉| 亚洲国产成人一区二区三区| 久久综合色婷婷| 国产成a人亚洲| 午夜视黄欧洲亚洲| 精品视频1区2区| 国产精品女同一区二区三区| 欧美日韩另类一区| 国产精品自拍网站| 国产精品久久久久久久久图文区| 日韩影院免费视频| 国产精品456| 经典一区二区三区| 欧美肥胖老妇做爰| 亚洲视频一二三| 懂色av一区二区三区免费看| 中文字幕成人av| 色94色欧美sute亚洲线路一久 | 1024成人网色www| 欧美一区二区三区日韩视频| 日韩av不卡一区二区| 国产精品久久午夜夜伦鲁鲁| 91麻豆精品国产91久久久久久久久 | 久久99国内精品| 亚洲精品写真福利| 中文字幕一区二区三区不卡| 久久久综合视频| 91在线视频观看| 欧美日韩精品欧美日韩精品一综合|