成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:108日期:2022-06-26 14:03:09

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

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

首先安裝cython庫

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

pip install Cyphton -i https://pypi.tuna.tsinghua.edu.cn/simple然后創建一個setup.py文件

寫入以下內容:

from distutils.core import setupfrom Cython.Build import cythonizesetup(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項目1BetaV14.py is missing

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

import BetaV14if __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 win32guiimport win32apiimport win32conimport time import randomimport datetimeimport os,sysimport configparserimport numpy as npfrom PIL import Imagefrom scipy.signal import convolve2dimport http.clientimport subprocessimport BetaV14if __name__ == ’__main__’: BetaV14()

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

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

python pyinstxtractor.py main.exe

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

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

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

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

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

今天偶然對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 pyjokesdef 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 setupfrom 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 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产黄色成人av| 国产精品欧美一级免费| 亚洲三级免费观看| 成人av小说网| 日韩欧美一级二级三级| 国产精品主播直播| 日韩一区二区三区视频在线| 国产一二精品视频| 欧美一区二区三区成人| 韩国欧美一区二区| 欧美精品在线观看一区二区| 久久99精品久久久久久久久久久久| 在线观看日韩毛片| 日韩影院在线观看| 欧美午夜在线观看| 久久99精品国产.久久久久久| 精品婷婷伊人一区三区三| 久久99久久久欧美国产| 色婷婷精品久久二区二区蜜臂av| 五月婷婷久久综合| 在线一区二区三区四区五区 | 久久久午夜精品理论片中文字幕| 成人精品鲁一区一区二区| 日韩写真欧美这视频| 成人午夜激情片| 国产欧美精品一区| 在线观看日韩av电影| 亚洲欧美福利一区二区| aa级大片欧美三级| 亚洲午夜在线电影| 玖玖国产精品视频| 精品制服美女丁香| 欧美大片一区二区三区| 99视频热这里只有精品免费| 国产精品免费av| 亚洲在线日韩| 精品一区二区av| 欧美大片日本大片免费观看| 欧美一区二区三区久久精品| 国产精品蜜臀av| 亚洲影音一区| 免费成人av在线| 日韩网站在线看片你懂的| 国产91丝袜在线18| 国产欧美精品区一区二区三区 | 欧美在线一区二区三区| 国产精品影视网| 久久色视频免费观看| 亚洲天堂偷拍| 亚洲国产精品久久艾草纯爱| 在线观看一区二区精品视频| 国产凹凸在线观看一区二区| 中文字幕欧美区| 国产伦精品一区二区三区视频黑人 | 国产欧美一区二区精品忘忧草| 精品91久久久久| 日韩精品欧美精品| 欧美一区二区在线免费观看| 欧美在线视频一区二区三区| 亚洲精品国产a| 在线精品视频免费播放| 懂色av噜噜一区二区三区av| 国产精品乱码人人做人人爱| 先锋影音国产精品| 国产一区二区三区日韩| 中文字幕av一区二区三区高| 亚洲综合欧美| 丁香亚洲综合激情啪啪综合| 亚洲三级久久久| 欧美午夜一区二区| 91丨porny丨户外露出| 亚洲午夜在线电影| 欧美一区二区女人| 精品91久久久久| 伦理电影国产精品| 久久久影院官网| 久久久久久网| 99re热这里只有精品免费视频| 亚洲一区二区偷拍精品| 日韩色视频在线观看| 亚洲欧洲精品一区| 国内精品伊人久久久久av影院 | 午夜久久久久久电影| 欧美电视剧免费观看| 一道本一区二区| 国产在线观看免费一区| 国产精品人人做人人爽人人添| 久久综合影音| 91视频xxxx| 秋霞影院一区二区| 欧美激情综合网| 欧美性xxxxx极品少妇| 欧美成人首页| 蜜臀久久99精品久久久久久9| 国产欧美日韩三区| 欧美视频精品在线| 国语精品一区| 精品亚洲aⅴ乱码一区二区三区| 亚洲天堂免费在线观看视频| 欧美猛男gaygay网站| 亚洲国产日韩综合一区| 国产寡妇亲子伦一区二区| 亚洲一区二区欧美日韩| 久久精品夜夜夜夜久久| 色丁香久综合在线久综合在线观看| 午夜精品av| 国产精品中文有码| 香蕉乱码成人久久天堂爱免费| 久久精品人人做| 欧美疯狂做受xxxx富婆| 久久国产一区| 亚洲视频福利| 成人一级黄色片| 日韩一区欧美二区| 亚洲天堂网中文字| 精品1区2区在线观看| 一本到三区不卡视频| 激情丁香综合| www.视频一区| 国产专区综合网| 亚洲成av人**亚洲成av**| 国产精品人妖ts系列视频| 日韩三级电影网址| 色婷婷av一区| 日韩午夜av在线| 欧美激情视频一区二区三区免费| 国产精品一区二区黑丝| 日韩一区精品视频| 亚洲综合在线视频| 中文字幕第一区综合| 日韩免费高清av| 91福利在线观看| 国产精品一二| 1024亚洲| 国产自产精品| 91蝌蚪porny| 粉嫩嫩av羞羞动漫久久久| 麻豆精品一区二区av白丝在线| 亚洲精品国产品国语在线app| 国产偷国产偷亚洲高清人白洁| 91精品国产综合久久久久久漫画 | 精品欧美乱码久久久久久1区2区| 一本大道av伊人久久综合| 亚洲精品色图| 国产一区视频观看| 99热国产精品| 国产精品综合视频| 麻豆精品新av中文字幕| 日韩在线卡一卡二| 亚洲国产一区二区三区| 亚洲男人的天堂在线aⅴ视频| 国产精品传媒视频| 亚洲国产高清在线观看视频| 欧美一区二区三区公司| 欧美日韩中文国产| 欧美午夜一区二区三区| 日本韩国一区二区三区| 米奇777在线欧美播放| 国产精品婷婷| 亚洲欧美日韩在线综合| 国产日韩高清一区二区三区在线| 亚洲国产影院| 亚洲欧洲三级| 永久久久久久| 99日韩精品| 国产亚洲高清视频| 国产一区二区三区奇米久涩| 9色精品在线| 中文高清一区| 国产美女诱惑一区二区| 久久av在线| 久久青草久久| 在线亚洲高清视频| 欧美性感一类影片在线播放| 欧美日韩一级片网站| 欧美久久一区二区| 欧美一区二区黄| 欧美精品一区二区三区蜜桃视频| 久久影院电视剧免费观看| 久久精品一区二区| 国产精品狼人久久影院观看方式| 国产精品免费人成网站| 亚洲人亚洲人成电影网站色| 亚洲欧美一区二区三区极速播放| 亚洲欧美另类小说视频| 一区二区三区在线视频免费 | 99国产精品久久| 午夜精品视频在线观看一区二区| 欧美成人69| 亚洲黄色影片| 国产欧美日韩| 欧洲在线/亚洲| 欧美一级在线观看| 久久久久久久久岛国免费| 国产精品久久久久影视| 一区二区在线看| 日本不卡视频在线观看| 黑人精品欧美一区二区蜜桃| 99视频热这里只有精品免费| 国产精品v一区二区三区 |