本文目錄一覽:
- 1、如何將自己的Python代碼打包發布到pypi上
- 2、怎麼把python程序發給別人
- 3、如何發布python程序
- 4、怎麼把python打包成一個程序
- 5、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