前一段用python寫了點小工具,希望能給同事用,這裡總結一下python的打包以及構建的方法。
首先是一些需要安裝依賴包的方法,這也是比較推薦的正統的方法。
在setup.py檔案中寫明依賴的庫和版本,注意需要提前安裝setuptools,然後執行
python setup.py install
檔案大致如下,這裡是selenium的安裝檔案:
import sys
from distutils.command.install import install_schemes
from os.path import dirname, join, isfile, abspath
from setuptools import setup
from setuptools.command.install import install
from shutil import copy
for scheme in install_schemes.values():
scheme['data'] = scheme['purelib']
setup_args = ,
'name': 'selenium',
'version': "2.52.0",
'description': 'python bindings for selenium',
'long_description': open(join(abspath(dirname(__file__)), "py", "readme.rst")).read(),
'url': '',
'classifiers': ['development status :: 5 - production/stable',
'intended audience :: developers',
'operating system :: posix',
'operating system :: microsoft :: windows',
'operating system :: macos :: macos x',
'topic :: software development :: testing',
'topic :: software development :: libraries',
'programming language :: python',
'programming language :: python :: 2.6',
'programming language :: python :: 2.7',
'programming language :: python :: 3.2',
'programming language :: python :: 3.3',
'programming language :: python :: 3.4'],
'package_dir': ,
'packages': ['selenium',
'selenium.common',
'selenium.webdriver',
'selenium.webdriver.android',
'selenium.webdriver.chrome',
'selenium.webdriver.common',
'selenium.webdriver.common.html5',
'selenium.webdriver.support',
'selenium.webdriver.firefox',
'selenium.webdriver.ie',
'selenium.webdriver.edge',
'selenium.webdriver.opera',
'selenium.webdriver.phantomjs',
'selenium.webdriver.remote',
'selenium.webdriver.support', ],
'package_data': ,
'data_files': [('selenium/webdriver/firefox/x86', ['py/selenium/webdriver/firefox/x86/x_ignore_nofocus.so']),
('selenium/webdriver/firefox/amd64', ['py/selenium/webdriver/firefox/amd64/x_ignore_nofocus.so'])],
'include_package_data': true,
'zip_safe': false
}setup(**setup_args)
如果雙方都有pip工具,直接使用命令匯出依賴並安裝即可
$ pip freeze > requirements.txt
$ pip install -r requirements.txt
pyintaller現在已經支援python 2.7, 3.3–3.5。工具可以自動搜尋依賴,並將檔案打包成單獨的exe。命令也非常簡單,當然還有自己可以選擇的一些命令,例如生成目錄還是單個檔案,生成路徑等等:
具體的安裝和使用參考
最簡單的使用如下:
pyinstaller myscript.py
ps:如果在linux下使用,需要root許可權,因為會涉及到檔案的建立,讀寫等等。同時,這個打包工具使用動態依賴庫,需要打包方和使用方是相同的作業系統。
cx_freeze類似,這裡不贅述。
如果依賴的第三方庫是純python實現,python2.6+/python3支援直接執行zip檔案。這裡參考了知乎的回答。
首先子啊zip檔案根目錄建立乙個main.py 檔案,乙個required目錄。
把依賴的非標準模組從你自己的開發環境下的site-packages下拷貝到zip目錄的required下
在main.py中利用file變數拿到執行路徑,拼接出 site-packages 的絕對路徑,新增到 sys.path 中,方法大致如下:
import sys然後載入非標準模組,執行原來的**即可。import os
path =os.path
.realpath(__file__)
path = os.path
.dirname(path)
path +=os.sep+"required"+os.sep+"site-packages"
sys.path
這裡有個限制:有一些操作不能執行,例如不能有操作檔案的指令,因為檔案還在zip裡沒有解壓。
pss:最後提乙個docker,因為沒有使用過,這裡暫且不講了。
Python打包工具比較
solution windows linux os x python 3 license one file mode zipfile import eggs pkg resources support bbfreeze yesyes yesno mitno yesyes yespy2exe yesn...
python打包工具pyinstaller的用法
pyinstaller是乙個很好用的python打包工具,在windows環境下可以將python指令碼打包成乙個exe可執行檔案,並且指令碼中所依賴的各種第三方庫在打包時候都會被統一處理到一起,這樣打包成的exe檔案就可以在沒有安裝這些庫的電腦上執行,甚至也可以在沒有安裝任何python環境的電腦...
python打包工具distutils的使用
執行python setup.py sdist既可以打包 from distutils.core import setup setup name dennings version 0.0.2 author shijian packages denning templates py modules i...