iospython打包
在實現iOS項目的自動打包工程中,我們需要配置好工程的證書文件信息,為了能夠自動的根據bundle id來設置不同的profile文件,我們可以通過腳本文件來修改工程的projext.pbxproj文件幫助我們進行自動設置。
1. Project.pbxproj
Xcode項目中的xxx.xcodeproj其實是一個文件夾,右鍵單擊xxx.xcodeproj,顯示包內容:
Project.pbxproj的解析
關於這個配置文件的結構,請參考 project.pbxproj,最熟悉的」陌生人 (http://www.olinone.com/?p=215),解析該文件可以使用現有的解析工具mod-pbxproj,該工具是一個python的腳本。其github地址為: https://github.com/kronenthaler/mod-pbxproj 。
為了修改不同taget的profile,我們需要知道這些配置在文件中的具體位置,不難發現:
我們的目標是為不同的bundle id設置不同的profile,所以只需要找到不同target的XCBuildConfiguration,修改其中PROVISIONING_PROFILE的值即可。通過分析project.pbxproj文件結構,你會發現其找到這些target的buildSettings的路徑如下:
rootObject=> PBXNativeTarget=> XCConfigurationList=> XCBuildConfiguration。
XCBuildConfiguration會有Debug和Release兩個版本,這里我們以修改Release版本的為例進行說明。
2. Python腳本修改profile
需要在工程目錄下配置如下腳本文件,通過從json文件中讀取配置信息,然後根據不同的bundle id來設置不同的profile文件和其他欄位信息。其中xcode_configurator_profile.py為修改profile的腳本文件,profile.json為配置的證書信息。demo如下圖所示:
首先在profile.json文件中配置好bundle id和對應的profile文件,如下如所示:
然後在工程目錄下執行xcode_configurator_profile.py:
檢查profile修改結果:
如果設置了以後有任何問題, 你可以在對應的xxx.xcodeproject下找到對應的備份。
『貳』 如何將python文件打包成exe文件
1.需要安裝 py2exe
2.示例代碼:
#exetest.py#創建一個gui界面,只用一個標簽和按鈕,無功能from Tkinter import *win = Tk()
label = Label(win,text = 'hello')
btn = Button(win,text = 'click')
label.pack()
btn.pack()
win.mainloop()
3.配置代碼:
#exeset.pyfrom distutils.core import setupimport py2exe
setup(console=["exetest.py"]) #運行的時候會有CMD窗口#或者setup(windows=["exetest.py"]) 運行的時候只有GUI
4.執行轉換
首先定位到文件目錄,然後運行CMD
python exeset.py py2exe
執行完畢之後會在該目錄中生成一個文件夾dist,裡面是生成的exe程序和相關依賴
5.使用pyinstaller
感覺pyinstaller比py2exe更好用,下載pyinstaller後解壓就好,然後把一個demo.py復制到目錄下,定位到位置後輸入命令:
python pyinstaller.py --onefile --windowed --icon=path\x.ico demo.py
其中 --onefile 表示只生成一個.exe文件,相關依賴都打包了, --windowed 表示生成的是GUI,否則是帶命令窗口的, --icon 是設置.exe的圖標。這些都是可選項。
『叄』 python自動打包ipa
使用如下:
cd到項目鬧畝派亂目錄
把腳本放液羨森入項目目錄下
在終端運行(需要安裝python環境)
『肆』 windows系統的python打包程序,在ios中能運行嗎
無fa可說
關注
python開發的程序在ios上應用_Python開發iOS程序 原創
2020-12-29 09:58:52
無fa可說
碼齡4年
關注
對,你沒有看錯,就是使用Python開發iOS程序!
我們見過使用JS、Lua、Ruby開發iOS程序的,但是基本沒有見過使用Python開發iOS程序(軟體)的,這是為什麼?關於這個問題,我後面會回答。
那麼,怎麼用Python開發iOS程序呢?其實我們最主要解決的就是下面幾件事情:
在iOS App中安裝Python解釋器。
搭建Python和objc通信的橋梁。
如何配置工程並開發。
如果不使用UIKit這些,那麼就要使用OpenGL ES這些了,這種方式,主要是用於開發游戲的,我們這里不涉及這些。
當然,以下所有內容都是在一台已經安裝了Xcode的Mac上進行的。
在iOS App中安裝Python解釋器
Python-iOS-support
pybee開源了一個可以嵌入到iOS工程中的Python編譯腳本,具體位置在這:
默認是使用Python 3.4.2,編譯x86_64、i386、ARMv7、ARMv7s、ARM64共5個版本,然後打成一個臃腫包,可選framework或者.a。
如果真的要用於生產環境的話,只要把Makefile中的
TARGETS-iOS=iphonesimulator.x86_64iphonesimulator.i386iphoneos.armv7iphoneos.armv7siphoneos.arm64
修改為:
TARGETS-iOS=iphoneos.armv7iphoneos.arm64
我們只需要支持ARMv7和ARM64即可,ARMv7s可以兼容ARMv7,所以可以讓包小一些。
『伍』 【python】打包成MAC APP
寫了一個python小程序,想打包成可執行的APP,看網上寫的教程很簡單,大概就是下面這個樣子。
1.生成setup.py文件
生成的默認setup.py內容如下:
2.打包
執行後會生成一個build和dist文件夾,dist下的main.app就是生成的可執行程序,雙擊即可運行。
但實際上,稍稍復雜一點的工程慶毀按照默認的setup.py打包,執行的時候都是會出錯的。
原本的設想是會把工程包按原本的目錄結構全部打包,但實際上需要用到的圖片,音源,文本等等,在執行的時候都會報錯找不到,因為都是要手動配置到setup.py里才能被打包。
如果不知道自己的APP為什麼會報錯,可用以下命令執行APP,就可以看到報錯信息:
所以需要修改setup.py如下:
具體的參數解釋: 官方文檔
icns的生成參考: 【MAC】生成MAC APP圖標icns
================================
追加一個打包後運行時遇到的一個讓我解決了很久的問題。
報錯信息如下:
查了很多信息,應該是動態鏈接庫的問題,當你的依賴庫里又去引用另一個庫的時候,會出現這種找不到的情況。但是網上的解決辦好判法我都沒有試成功,尤其我要保證我的APP去了任何一台機器都可以直接運行。所以最後嘗試了最傻的辦法。就是直接把這個找不到的庫譽襪備打包進我的APP,雖然這個libffi.8.dylib應該是一個shared lib.
所以修改setup.py文件里追加如下設置:
重新打包後,libffi.8.dylib就會自動出現在Frameworks下面,本機雙機運行正常,直接傳到其它機器運行也正常了。
『陸』 如何將一整個python工程打包
1、下載並蘆轎安裝py2exe,可下載最新版本。
2、編寫安裝腳本,比較簡單,不過多解釋,如下:
Screenshot_setup.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from distutils.core import setup
import py2exe
includes = ["encodings", "encodings.*"]
data_files = ['CameraDll.dll']
options = {"py2exe":
{ "compressed": 1,
"optimize": 2,
"bundle_files": 1,
"includes": includes
}
}
setup(
version = "1.0",
description = "Screenshot Tool",
name = "Screenshot Tool",
options = options,
zipfile=None,
data_files = data_files,
console=[{"script": "陪銷肆Screenshot.py", "icon_resources": [(1, "Screenshot.ico")] }]
)
各參數含義見第5小節或執行python命令行下執行help(py2exe)查看。
3、打包程序:
a、將要找包的程序、文件和打包腳本放在同一目錄下,如下:
E:\tmp\pyexe_tmp>tree /F
文件夾 PATH 列表
卷序列號碼為 0007F240 101F:F68D
E:.
CameraDll.dll
screenshot.ico
Screenshot.py
screenshot_setup.py
沒有子文件夾
E:\tmp\pyexe_tmp>
b、執行打包腳本:
E:\tmp\pyexe_tmp>python screenshot_setup.py py2exe
python screenshot_setup.py py2exe
running py2exe
creating E:\tmp\pyexe_tmp\build
creating E:\tmp\pyexe_tmp\build\bdist.win32
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\collect-2.6
creating E:\tmp\pyexe_tmp\build\bdist.win32\winexe\bundle-2.6
creating E:\斗滲tmp\pyexe_tmp\build\bdist.win32\winexe\temp
creating E:\tmp\pyexe_tmp\dist
*** searching for required moles ***
*** parsing results ***
*** finding dlls needed ***
*** create binaries ***
*** byte compile python files ***
writing byte-compilation script 'e:\tmp\tmp1ecbcw.py'
『柒』 python怎麼打包整個項目
distutils - Python自帶的基本安裝工具, 適用於非常簡單的應用場景使用, 不支持依賴包的安裝
通過distutils來打包,生成安裝包,安裝python包等工作,需要編寫名為setup.py python腳本文件。
setuptools - 針對 distutils 做了大量擴展, 尤其是加入了包依賴機制。不支持python3,安裝完setuptools後會有easy_install
distribute - 類似於setuptools,支持python3,安裝完distribute後會有easy_install。
easy_install - setuptools 和 distribute 自帶的安裝腳本, 也就是一旦setuptools或distribute安裝完畢, easy_install 也便可用了。
pip - 目標是取代easy_install。easy_install 有很多不足: 安裝事務是非原子操作, 只支持 svn, 沒有提供卸載命令, 安裝一系列包時需要寫
腳本; pip 解決了以上問題, 已儼然成為新的事實標准, virtualenv 與它已經成為一對好搭檔;
distutils2 - setuptools 和 distribute 的誕生是因為 distutils 的不濟, 進而導致目前分化的狀況。它將成為 Python 3.3 的標准庫
packaging , 並在其它版本中以distutils2 的身份出現; 換句話說, 它和 pip 將聯手結束目前混亂的狀況。
virtualenv - 用來創建隔離的python環境,處理python環境的多版本和模塊依賴。
常識
sudo apt-get install 安裝的package存放在 /usr/lib/python2.7/dist-packages目錄中
pip 或者 easy_install安裝的package存放在/usr/local/lib/python2.7/dist-packages目錄中
手動從源代碼安裝的package存放在site-packages目錄中。
更多學習內容,請點擊Python學習網!
『捌』 將python打包成exe
return 應該放在一個函數裡面的,
將python打包成exe的程序有很多,比如py2exe、PyInstaller等等,但是到目前為止,它們對python3.1支持的都不好,所以這里我要介紹一下cx_freeze 4.2.2,它還能支持跨平台,可以在windows和linux運行。
cx_freeze的下載網址為 http://sourceforge.net/projects/cx-freeze/files/ ,要根據已安裝的python版本進行選擇。比如我使用的是python3.1,所以就要下載cx_Freeze-4.2.2.win32-py3.1.msi這個文件。運行這個安裝包後,相關程序就會被拷貝到python的目錄下。主要在兩個地方,一個是C:/Python31/Scripts,另一個是C:/Python31/Lib/site-packages/cx_Freeze
在以前版本的cx_Freeze中,是通過FreezePython.py這個腳本將py轉換為exe,而在4.2.2這個版本中,FreezePython.py已經不見了,主要的工作交給了C:/Python31/Scripts下的cxfreeze.bat來完成。
使用cx_Freeze完成python打包exe主要有兩種方法:
第一種,直接運行cxfreeze.bat通過:
先進入cmd命令行,進入C:/Python31/Scripts目錄,然後運行cxfreeze.bat -h 就可以看到它的使用說明了。我們可以用cx_freeze自己的sample做個試驗。
進入到c:/python31/scripts/下,運行
cxfreeze C:/Python31/Lib/site-packages/cx_Freeze/samples/PyQt4/PyQt4app.py --install-dir=d:/123
pytqt4app.py就會被打包成exe,並且它所用到的庫文件,也被一並考到了d:/123目錄下。