打包python程序發布(python怎麼打包發布)

本文目錄一覽:

如何將自己的Python代碼打包發布到pypi上

什麼是pypi

簡單的說pypi是一個python包的倉庫,裡面有很多別人寫好的python庫,你可以通過easy_install或者pip進行安裝,方便用戶更方面的使用你的代碼模塊。

將代碼打包並上傳到pypi上,大體上分為以下幾步:

1、整理代碼的目錄結構,方便打包和python的import,為了方便引用,需要將代碼模塊變成一個包,所以需要將功能代碼用目錄來整合方便引用,並且需要創建__init__文件,__init__中可以沒有內容,也可以在__init__文件中進行import(from .extractor import Document)操作,以減少整體模塊引用時import的層數,避免錯誤。

[html] view plain copy

├── ./tidypage  

│   ├── ./tidypage/cleaners.py  

│   ├── ./tidypage/extractor.py  

│   ├── ./tidypage/__init__.py  

│   └── ./tidypage/titles.py

2、功能模塊的目錄整理好後,就可以開始整理和添加發布到pypi上所使用的文件了

tidy_page  

├── LICENSE  

├── README.rst  

├── requirements.txt  

├── setup.py  

├──tidypage  

│   ├──cleaners.py  

│   ├──extractor.py  

│   ├──__init__.py  

│   └──titles.py

就是將原來的目錄深移一層,文件夾名稱可以根據自己意願。然後在到第一層的目錄下創建些特殊文件,具體你可以看看下面這個文件結構你就明白了

LICENSE文件是授權文件,比如:MIT license, APACHE license

README.rst 文件想必大家都不陌生,其實就是項目介紹和使用說明

setup文件才是重點,是python模塊安裝所需要的文件,它的格式如下:

#!/usr/bin/env python  

from __future__ import print_function  

from setuptools import setup, find_packages  

import sys  

  

setup(  

    name=”tidy-page”,  

    version=”0.1.1″,  

    author=”Desion Wang”,  

    author_email=”wdxin1322@qq.com”,  

    description=”html text parser,get the content form html page”,  

    long_description=open(“README.rst”).read(),  

    license=”MIT”,  

    url=””,  

    packages=[‘tidypage’],  

    install_requires=[  

        “beautifulsoup4”,  

        lxml_requirement  

        ],  

    classifiers=[  

        “Environment :: Web Environment”,  

        “Intended Audience :: Developers”,  

        “Operating System :: OS Independent”,  

        “Topic :: Text Processing :: Indexing”,  

        “Topic :: Utilities”,  

        “Topic :: Internet”,  

        “Topic :: Software Development :: Libraries :: Python Modules”,  

        “Programming Language :: Python”,  

        “Programming Language :: Python :: 2”,  

        “Programming Language :: Python :: 2.6”,  

        “Programming Language :: Python :: 2.7”,  

    ],  

)

NAME 名字,一般放你包的名字即可PACKAGES 包含的包,可以多個,這是一個列表DESCRIPTION 關於這個包的描述LONG_DESCRIPTION 參見read方法說明KEYWORDS 關於當前包的一些關鍵字,方便PyPI進行分類。AUTHOR 誰是這個包的作者,寫誰的名字吧AUTHOR_EMAIL 作者的郵件地址URL 你這個包的項目地址,如果有,給一個吧,沒有你直接填寫在PyPI你這個包的地址也是可以的VERSION 當前包的版本,這個按你自己需要的版本控制方式來LICENSE 授權方式INSTALL_REQUIRES 模塊所依賴的python模塊

文中的classifiers的內容並不是隨便填寫的,你需要參照本文參考文檔中的PyPI Classifiers來寫

3、開始使用Distutils進行打包

為了保證效果,在打包之前我們可以驗證setup.py的正確性,執行下面的代碼

python setup.py check

輸出一般是running check如果有錯誤或者警告,就會在此之後顯示沒有任何顯示錶示Distutils認可你這個setup.py文件。

如果沒有問題,那麼就可以正式打包,執行下面的代碼:

python setup.py sdist

執行完成後,會在頂層目錄下生成dist目錄和egg目錄

tidy_page  

├── tidy_page/dist  

│   ├── tidy_page/dist/tidy-page-0.1.0.tar.gz  

│   └── tidy_page/dist/tidy-page-0.1.1.tar.gz  

├── tidy_page/LICENSE  

├── tidy_page/README.rst  

├── tidy_page/setup.py  

├── tidy_page/tidypage  

│   ├── tidy_page/tidypage/cleaners.py  

│   ├── tidy_page/tidypage/extractor.py  

│   ├── tidy_page/tidypage/__init__.py  

│   └── tidy_page/tidypage/titles.py  

├── tidy_page/tidy_page.egg-info  

│   ├── tidy_page/tidy_page.egg-info/dependency_links.txt  

│   ├── tidy_page/tidy_page.egg-info/PKG-INFO  

│   ├── tidy_page/tidy_page.egg-info/requires.txt  

│   ├── tidy_page/tidy_page.egg-info/SOURCES.txt  

│   └── tidy_page/tidy_page.egg-info/top_level.txt

4、打包完成後就可以準備將打包好的模塊上傳到pypi了,首先你需要在pypi上進行註冊 goto PyPI Live

註冊完成後,你需要在本地創建好pypi的配置文件,不然有可能會出現使用http無法上傳到pypi的問題

Create a .pypirc configuration file,在用戶的home目錄下創建.pypirc文件,文件的內容如下

[distutils]index-servers =  pypi[pypi]repository=

chmod 600 ~/.pypirc

python setup.py register -r pypi

在pypi上註冊模塊

python setup.py sdist upload -r pypi

上傳python文件包,沒有問題你就可以在pypi上看到你上傳的包了並且可以使用pip搜索和install你的python包了

怎麼把python程序發給別人

可以將python編譯成可執行文件發送,也可以採取打包的形式,將程序打包成壓縮文件包後再發送。

如何發布python程序

如何發布一個Python程序:

1、安裝一個pyInstaller

在pycharm里點 file—–setting—–Project workspace——Interpreter——點pip右邊的+號,進入下面這個界面:

搜索pyInstaller, 點擊左下方Install package安裝(出現錯誤了可以多安裝幾次)

(或者在命令提示符界面 用 pip install pyinstaller命令安裝)

2、將.py文件打包成.exe文件

在完成第一步的安裝後,就開始我們的打包。在打包之前可以先運行一下你要打包的.py文件是否可以運行,然後進行打包。

在pycharm中右鍵點擊你將要打包的文件,找到Open in terminal點一下。

在下面出現的Local框內輸入命令:pyinstaller -F 文件名,運行。

然後進行打包

打包完成後,稍等一下會刷新出一個dist文件夾, 點擊 ,在裡面有一個 .exe文件,右鍵,點擊裡面的 Show in Explore 找到一個.exe文件(如果不一樣的可以看一下你下面打包成功後出現的路徑。)

3、發送

將打包好的.exe文件拉到你之前.py文件所在的文件夾,將所有需要的素材一起發送。

別人收到後就能打開你的.exe文件運行你的程序。

眾多python培訓視頻,盡在python學習網,歡迎在線學習!

怎麼把python打包成一個程序

一、安裝pyinsatller打開命令行窗口,輸入如下指令

pip3 install pyinstaller

然後靜待pyinstaller自動安裝好

二、使用pyinstaller打包Python程序

在你的Python程序文件夾上(不點進去)按住shift並且右鍵,在彈出的選項中點擊”在此處打開命令行窗口”或者“在此處打開PowerShell窗口”或者先進入命令行窗口,然後使用cd指令進入程序文件夾,示例:

cd G:\工程儲存\Python工程\love

輸入以下指令,開始打包

pyinstaller -F -w (-i icofile) filename

filename表示你的Python程序文件名

-w 表示隱藏程序運行時的命令行窗口(不加-w會有黑色窗口)

括號內的為可選參數,-i icofile表示給程序加上圖標,圖標必須為.ico格式icofile表示圖標的位置,建議直接放在程序文件夾裡面,這樣子打包的時候直接寫文件名就好輸入完成,按回車,就會開始自動打包了,

第一次打包過程可能比較緩慢輸入

示例:pyinstaller -F -w -i favicon love.py

然後我們進入到程序目錄裡面會再看到一個名稱為dist目錄,打包好的exe程序就在裡面

Python程序代碼混淆、編譯、打包、運行(桌面程序防破解向)

像Python這種解釋性的語言,要想私有化部署的同時又保護好源碼,就像是對於魚和熊掌的追求。

雖然做不到盡善盡美,但是對代碼進行混淆,增加一點破解的難度,或許能規避一些泄露的風險。

本次演示環境:linux

確保要發布的包根目錄(“demo”)中有__main__.py文件,這個是程序執行入口。

編譯

批量改名.pyc文件

移動.pyc文件

清理.py文件

清理__pycache__文件夾

打包成zip

運行時只要將zip文件作為參數即可

最終整合腳本

調用方式

對於在變量和函數名上的混淆有點小兒科,而對於跨文件的類名的混淆又太容易實現。

所以對於混淆程度的取捨,要視工程的規模而定。

2.1 混淆工具pyminifier

在原來的工具 pyminifier上修復了幾個bug。

安裝:

python3 安裝

或者clone下來,自行安裝

使用例子

2.2 源碼變更

不同的配置對於源碼的要求不同,以下是筆者踩過的坑。

其他混淆想法

結合混淆、編譯和打包,嘗試出以下發布腳本。

主要的思路 :創建一個工作目錄tmp,然後在此目錄下混淆、編譯python代碼,完成後把內容打包成pyc文件,再將pyc文件和其他配置文件移動到dist,發布dist即可。

混淆的目的是最大程度保護源碼,在發布到客戶端後不被輕易破解。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/254029.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 02:38
下一篇 2024-12-14 02:38

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論