【python】專案打包釋出
概覽
這裡主要收集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目錄中
一、distutils
- 新建資料夾(例如:distribution), 將專案檔案放進去
-
在該資料夾下,新建setup.py檔案
-
編輯內容:
from distutils.core import setup
setup(
name=’logIn’, #這個是最終打包的檔名
version=’1.0.0’,
py_modules=[‘logInr’], #要打包哪些,.py檔案,
) - 儲存退出
-
-
在命令列下,進入該資料夾,執行一下命令:
- (1). 打包:python setup.py sdist
這樣在資料夾中就多出了幾個檔案,在dist資料夾中的,logIn-1.0.0.tar.gz就是我們的釋出包了; - (2). 安裝包到本地副本中(路徑為:/usr/local/lib/python2.7/dist-packages):
sudo python setup.py install (–record files.txt)
注意:為了方便解除安裝,可以新增括號中的選項(當前資料夾會產生files.txt), 解除安裝時就可以在當前資料夾下使用如下命令:
sudo cat files.txt | sudo xargs rm -rf
- (1). 打包:python setup.py sdist
二、setuptools:
-
setuptools 只是對distutils 的增強, 其使用過程還是一樣:
編輯: 先在專案主目錄下編輯setup.py, 打包: python setup.py sdist 安裝: sudo python setup.py install (--record files.txt) 解除安裝: sudo cat files.txt | sudo xargs rm -rf
-
setuptools工具的setup.py的模板
-
模板 (只是一部分, 詳見官網說明)
import ez_setup ez.setup.use_setuptools() # 這兩行是當setuptools不存在時,自動從網上下載安裝所需的setuptools包. from setuptools import setup, find_packages setup( name = "HelloWorld", version = "0.1", packages = find_packages(), # 常用,要熟悉 :會自動查詢當前目錄下的所有模組(.py檔案) 和包(包含__init___.py檔案的資料夾) scripts = ['say_hello.py'], # Project uses reStructuredText, so ensure that the docutils get # installed or upgraded on the target machine install_requires = ['docutils>=0.3'], # 常用 package_data = { # If any package contains *.txt or *.rst files, include them: '': ['*.txt', '*.rst'], # And include any *.msg files found in the 'hello' package, too: 'hello': ['*.msg'], }, # entry_points = { 'console_scripts': [ 'foo = demo:test', 'bar = demo:test', ], 'gui_scripts': [ 'baz = demo:test', ] }, # metadata for upload to PyPI author = "Me", author_email = "[email protected]", description = "This is an Example Package", license = "PSF", keywords = "hello world example examples", url = "http://example.com/HelloWorld/", # project home page, if any # could also include long_description, download_url, classifiers, etc. )
-
三、virtualenv
-
主要命令:
$ virtualenv ENV $ virtualenv --system-site-packages ENV # 繼承系統原來的安裝包 $ source bin/activate # 啟動虛擬環境 $ deactivate # 退出環境 $ rm -r /path/to/ENV # 刪除環境 $ virtualenv --relocatable ENV # 創造可以浮動的虛擬環境 $ virtualenv --extra-search-dir=/path/to/distributions ENV # 新增自定義版本的pip或setuptools
-
移植:
建立無繼承的虛擬環境 virtualenv --no-site-packages PATH/to/projDirName 進入projDirName, 編輯專案 cd PATH/to/projDirName 退出,至上級目錄 cd .. virtualenv --relocatable projDirName# 創造可以浮動的虛擬環境 將整個資料夾複製到指定的機器上, 進入PATH/to/projDirName, 啟動環境,執行程式
四 、pip
-
這裡只列出部署相關的兩條命令
pip freeze > requirements # freeze 是匯出當前環境安裝的安裝包 pip install -r requirements.txt # 這個requirements.txt 有格式要求
相關推薦
【python】專案打包釋出
概覽 這裡主要收集python專案的打包、釋出和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準(連結每節都已經給出)。 簡介 distutils - Python自帶的基本安裝工具, 適用於非常簡單的應用場景使用, 不支援依賴包的安裝 通過
【python】pyinstaller 打包
起因 明日七夕好友表白在網上找到一個表白工具,地址如下 python表白工具 由於需要使用python才可以執行,故而使用pyinstaller 進行打包 程式碼說明 本文表白程式碼來自程式碼 檔案路徑 import sys im
【Maven】專案打包-war包-Jar包[IDEA將專案打成war包]
首先,專案必須得是Maven配置的專案。 增加了一個釋出外掛來實現。 在專案的pom.xml中增加如下程式碼: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http
【python】程式打包成可執行檔案
優點: 1. pyinstaller 是跨平臺的可以用在linux和windows系統上 2. 操作非常簡單,幾個命令就搞定了,這個比py2exe容易用多了 缺點: 1. 打包後的體積過大,因為要
【Python】打包壓縮軟體,命名軟體名為軟體的版型、遙控等資訊
原始碼: # -*- coding: utf-8 -*- #coding=utf-8 ''' 打包軟體指令碼 指令碼說明:打包後壓縮檔案的命名為(版型、屏參、遙控名、版本號、編譯時間等資訊) 注意事項:執行指令碼時需要帶該軟體的配置檔案的編號 執行方法:python zip.p
【docker案例】專案打包部署
docker compose用法 什麼是compose Compose是一個定義和管理多容器的工具,使用Python語言編寫。使用Compose配置檔案描述多個容器應用的架構,比如使用什麼映象、資料卷、網路、對映埠等;然後一條命令管理所有服務,比如啟
【開發】專案釋出引起的思考與總結
文章目錄場景思考與方案 場景 營銷系統中經常會有重構一個活動的需求,有時需要推翻原來的方案重新制定新的策略,就需要考慮新舊資料的相容,若存在快取的話,也需要考慮快取的更新,尤其是對於使用者流量比較大的活動,下面是一個細化的場景: 舊活動A有著很大的使用者流量,Q
Python專案打包釋出方法
目前python打包工具有多個,目前比較好用的為pyinstaller,該工具可以支援在window和linux下使用。 在windows下,大小為幾十K的原始檔打包成exe檔案,可能為幾十
【Python】3.6版本py檔案打包生成exe
原文提到的要點: 1. Python版本32位 (檔名為 python-3.6.1.exe) 2. 安裝所有用到的模組(原文博主用的是openpyxl,我用到的有urllib中的request\config\data) 3. 下載替換pyinstaller(下載pyins
【Python】 @classmethod 在實際專案中的應用
主要內容 在專案中,多數作用於獲取專案配置檔案的配置屬性。 例如,需要編寫一箇中間件test,程式碼如下 class A(object): def __init__(self, parms): self.parms = parms
python專案打包釋出總結
概覽 這裡主要收集python專案的打包、釋出和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準(連結每節都已經給出)。 簡介 distutils - Python自帶的基本安裝工具, 適用於非常簡單的應用場景使用, 不
【Python】Pycharm同步Github專案
原文地址:http://zhidao.baidu.com/link?url=0P7DGHosch8byrCXK1lMcOkJ2LGqlP3ptVhDVbmkM4MKRRMW4z8m2anrbzJYjdtHyB_ebftbgUlxYnEdYYNEbrXW4IyfNhUTdBS
【python】pycharm中新開啟一個專案都提示no python interpreter的解決辦法
一、前言: 最近使用pycharm總是遇到這樣一個問題:每次開啟一個新的專案都會提示no python interpreter,意思是沒有找到python編譯器。具體表現方式就是: 二
【python】pycharm 如何快速建立scrapy專案
由於pycharm中無法直接建立scrapy 專案, 所以必須通過控制檯呼叫scrapy建立專案然後匯入到IDE中。 在網上查了一些資料,大多數都是要從terminal新增環境變數,其實不用那麼麻煩。我是用下pycharm中操作的: 1. 進入pycharm,點選file&
【Python】正則表達式1(未完)
pes mmu get regular rop 則表達式 line out github 1、正則表達式唯一的用途就是在文本中匹配和尋找模式,模式可以簡單,也可以復雜。 2、Regexr 這個網站很個性的就是,有一個community標簽,打開後可以看到評分由高到低
【LeetCode】【Python】Binary Tree Inorder Traversal
nod 不知道 otto div ack return integer neu else Given a binary tree, return the inorder traversal of its nodes‘ values. For example: Gi
【Python】決策樹的python實現
uia bmp say 不知道 times otto outlook lru bgm 【Python】決策樹的python實現 2016-12-08 數據分析師Nieson 1. 決策樹是什麽? 簡單地理解,就是根據一些 feature 進行分類,每個節點提一個問
【Python】基礎知識
數據 文件 專用 一切都 元組 內存 引用傳遞 asc ilo 1. python腳本語言的第一行,目的就是指出,你想要你的這個文件中的代碼用什麽可執行程序去運行它 #!/usr/bin/python 是告訴操作系統執行這個腳本的時候,調用/usr/bin下
【Python】python2.7 安裝配置OpenCV2
pen 2.4.1 安裝 so文件 strong make lib con ack 環境:Ubuntu16.04 anaconda Python2.7 opencv2.4.13 安裝opencv後 import cv2 遇到錯誤信息: No module named cv2
【Python】數組排序
log false blog sort函數 () ron 返回 imp 總結 1.numpy庫:argsort() argsort函數返回的是數組值從小到大的索引值(升序排列) 一維: In [1]: import numpy as np In [2]: x