① python項目文件(多個子文件,.py文件等)如何用pyinstaller打包為可執行exe文件
文件構成
使用pyinstaller打包的時候,僅打包.py文件,其餘依賴項只需在打包完成後,拷入打包生成的根目錄即可。
多文件打包
命令格式如下,下命令為一條命令,為方便顯示做了分行處理:
pyinstaller [主文件] -p [其他文件1] -p [其他文件2]
--hidden-import [自建模塊1]
--hidden-import [自建模塊2]
# 以上為一整條命令
以上文圖中結構為例,在根目錄打開命令窗口,輸入命令:
pyinstaller main.py -p mysql.py -p other.py --hidden-import mysql --hidden-import other
在目錄結構:「程序根目錄distmain」 下可以找到生成的main.exe。將其他依賴文件拷貝進入「程序根目錄distmain」 下,即可運行。
② python打包最快的模塊
python打包逗州最快的模塊有PyInstaller,Nuitka。
1、PyInstaller:PyInstaller是一個功能強大的打包工具,能夠輕松地中喊將Python腳本打包成獨立的可執行文件。它支持多平台交叉打包,能夠處理各種賣指野復雜情況,打包速度相較於其他打包工具很快。
2、Nuitka:Nuitka是一個基於C++編寫的Python編譯器,可以將Python代碼轉換為高性能的本地機器碼,並將其打包為真正的可執行文件。與其他打包工具不同,它將Python代碼直接編譯成機器碼,從而實現更快的執行速度和更小的文件大小。因此,打包速度也會比其他打包工具略快。
③ 怎麼將多個python打包成exe文件
1、安裝pywin32,可以參考《怎麼給python安裝pywin32模塊?》,一定要注意對應的python版本,否則不能安裝。
④ 如何將自己的Python代碼打包發布到pypi上
什麼是pypi
簡單的說pypi是一個python包的倉庫,裡面有很多別人寫好的python庫,你可以通過easy_install或者pip進行安裝,方便用戶更方面的使用你的代碼模塊。
將代碼打包並上傳到pypi上,大體上分為以下幾步:
1、整理代碼的目錄結構,方便打包和python的import,為了方便引用,需要將代碼模塊變成一個包,所以需要將功能代碼用目錄來整合方便引用,並且需要創建__init__文件,__init__中可以沒有內容,也可以在__init__文件中進行import(from .extractor import Document)操作,以減少整體模塊引用時import的層數,避免錯誤。
[html]viewplain
├──./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, APACHElicense
README.rst 文件想必大家都不陌生,其實就是項目介紹和使用說明
setup文件才是重點,是python模塊安裝所需要的文件,它的格式如下:
#!/usr/bin/envpython
from__future__importprint_function
fromsetuptoolsimportsetup,find_packages
importsys
setup(
name="tidy-page",
version="0.1.1",
author="DesionWang",
author_email="[email protected]",
description="htmltextparser,getthecontentformhtmlpage",
long_description=open("README.rst").read(),
license="MIT",
url="https://github.com/desion/tidy_page",
packages=['tidypage'],
install_requires=[
"beautifulsoup4",
lxml_requirement
],
classifiers=[
"Environment::WebEnvironment",
"IntendedAudience::Developers",
"OperatingSystem::OSIndependent",
"Topic::TextProcessing::Indexing",
"Topic::Utilities",
"Topic::Internet",
"Topic::SoftwareDevelopment::Libraries::PythonMoles",
"ProgrammingLanguage::Python",
"ProgrammingLanguage::Python::2",
"ProgrammingLanguage::Python::2.6",
"ProgrammingLanguage::Python::2.7",
],
)
文中的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上進行注冊gotoPyPI Live
注冊完成後,你需要在本地創建好pypi的配置文件,不然有可能會出現使用http無法上傳到pypi的問題
Create a.pypircconfiguration file,在用戶的home目錄下創建.pypirc文件,文件的內容如下
[distutils]index-servers=pypi[pypi]repository=https://pypi.python.org/pypiusername=your_usernamepassword=your_passwor
chmod600~/.pypirc
pythonsetup.pyregister-rpypi
在pypi上注冊模塊
python setup.py sdist upload -r pypi
上傳python文件包,沒有問題你就可以在pypi上看到你上傳的包了並且可以使用pip搜索和install你的python包了
⑤ python打包成dist包
使用python內部基礎工具包Distutils打包程序:
在打包之前需要做的就是配置好安裝腳本,一般為setup.py文件;
示例(setup.py):
from distutils.core import setup
setup(name='Hello',
version='1.0',
description='example',
author='haomiao',
py_moles=['hello'])
該配置文件,只使用了py_moles參數,單一的模塊文件名hello.py,當然還有其他的屬性、選項可設置;hello.py應與setup.py在同一目錄下,分發的時候最好將該目錄作為單獨的一個目錄文件,並將其所依賴的或需要的文件、資源均放在這個目錄下或其子目錄下,該目錄就可以分發給其他開發人員或客戶(一般的最終客戶不會做這些安裝的繁瑣事情);
此外,若有其他的資源文件或是其他的多個py文件,則可以增加packages等其他相關的參數指令。
將該目錄模塊安裝到python中;執行:python setup.py install ,此後將會復制相關文件至python安裝路徑下的Lib/site-packages下,
如上示例將會在該路徑下產生:hello.py hello.pyc Hell-1.0-pyx.x.egg-info文件;在使用的時候直接:import hello即可使用。
在上述情況的基礎上打包,再使用sdist命令(用於源碼發布的形式)
執行:python setup.py sdist ,將產生兩個目錄build、dist以及MANIFEST列表文件,build下為中間文件可不用,dist下會打包成一個壓縮文件,如:Hello-1.0.zip;事實上,該壓縮文件內部包含之前的文件以及PKG-INFO的描述文件,這個時候該壓縮文件就可以分發給用戶;