1. 程式人生 > >python專案打包釋出總結

python專案打包釋出總結

概覽

這裡主要收集python專案的打包、釋出和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準(連結每節都已經給出)。

簡介

  1. distutils - Python自帶的基本安裝工具, 適用於非常簡單的應用場景使用, 不支援依賴包的安裝
      通過distutils來打包,生成安裝包,安裝python包等工作,需要編寫名為setup.py python指令碼檔案。

  2. setuptools - 針對 distutils 做了大量擴充套件, 尤其是加入了包依賴機制。不支援python3,安裝完setuptools後會有easy_install

  3. distribute - 類似於setuptools,支援python3,安裝完distribute後會有easy_install。

  4. easy_install - setuptools 和 distribute 自帶的安裝指令碼, 也就是一旦setuptools或distribute安裝完畢, easy_install 也便可用了。

  5. pip - 目標是取代easy_install。easy_install 有很多不足: 安裝事務是非原子操作, 只支援 svn, 沒有提供解除安裝命令, 安裝一系列包時需要寫指令碼; pip 解決了以上問題, 已儼然成為新的事實標準, virtualenv 與它已經成為一對好搭檔;

  6. distutils2 - setuptools 和 distribute 的誕生是因為 distutils 的不濟, 進而導致目前分化的狀況。它將成為 Python 3.3 的標準庫 packaging , 並在其它版本中以distutils2 的身份出現; 換句話說, 它和 pip 將聯手結束目前混亂的狀況。

  7. virtualenv - 用來建立隔離的python環境,處理python環境的多版本和模組依賴。

  8. 常識
    • 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

  1. 新建資料夾(例如:distribution), 將專案檔案放進去
  2. 在該資料夾下,新建setup.py檔案

    • 編輯內容:

      from distutils.core import setup
      setup(
      name=’logIn’, #這個是最終打包的檔名
      version=’1.0.0’,
      py_modules=[‘logInr’], #要打包哪些,.py檔案,
      )

    • 儲存退出
  3. 在命令列下,進入該資料夾,執行一下命令:

    • (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

二、setuptools:

  1. setuptools 只是對distutils 的增強, 其使用過程還是一樣:

    編輯: 先在專案主目錄下編輯setup.py,
    打包: python setup.py sdist 
    安裝: sudo python setup.py install  (--record files.txt)
    解除安裝: sudo cat files.txt | sudo  xargs rm -rf
    
  2. 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

  1. 主要命令:

        $ 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        
    
  2. 移植:

        建立無繼承的虛擬環境
        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專案打包釋出方法

        目前python打包工具有多個,目前比較好用的為pyinstaller,該工具可以支援在window和linux下使用。       在windows下,大小為幾十K的原始檔打包成exe檔案,可能為幾十

python專案打包釋出

概覽 這裡主要收集python專案的打包、釋出和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準(連結每節都已經給出)。 簡介 distutils - Python自帶的基本安裝工具, 適用於非常簡單的應用場景使用, 不支援依賴包的安裝    通過

maven專案打包釋出時跳過測試

1、在執行run as時候加上引數: clean install compile -Dmaven.test.skip=true 2、在pom檔案中新增如下: [html] view plain copy <code class="language-html"> 

SpringBoot專案打包釋出到外部tomcat時,出現各種異常的解決fang

先說遇到問題的情景: 初次嘗試使用spring boot框架寫了個小web專案,在Intellij IDEA中能正常啟動執行。使用maven 執行install,生成war包,釋出到本機的tomcat下,出現異常,主要的異常資訊是  …LifeCycleExce

python專案打包(自定義dll) anaconda3+pyinstaller

        目前手上有一個python+pyqt的專案需要打包,所以查了一下打包的方法。下面介紹一下具體步驟: python打包有很多方法,py2exe,pyinstaller等等(其實我也就知道這兩種)。py2exe要自己寫setup.py, 太麻煩。用了pyins

springboot系列三、SpringBoot 單元測試、配置訪問配置、專案打包釋出

一、單元測試 生成的demo裡面包含spring-boot-starter-test :測試模組,包括JUnit、Hamcrest、Mockito,沒有的手動加上。 <dependency> <groupId>org.springframework.boo

Qt 程式打包釋出總結

1.  概述  當我們用QT寫好了一個軟體,要把你的程式分享出去的時候,不可能把編譯的目錄拷貝給別人去執行。編譯好的程式應該是一個主程式,加一些資原始檔,再加一些動態連結庫,高大上一些的還可以做一個安裝檔案。 QT開發的程式釋出的時候經常採用兩種方式: l  靜態編譯,可

Python依賴打包釋出詳細

將Python指令碼打包成可執行檔案 Python是一個指令碼語言,被直譯器解釋執行。它的釋出方式: .py檔案:對於開源專案或者原始碼沒那麼重要的,直接提供原始碼,需要使用者自行安裝Python並且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做

netty 專案打包釋出至liunx

前言: 之前我們提及瞭如何使用Maven來建立、管理和打包專案,也簡單過了一遍Linux中搭建Java開發環境的步驟,現在我們就開始將我們之前開發的專案demo釋出到Linux環境下,並讓它正常執行起來。 釋出思路: 使用Maven將專案打包為.jar將專案的.j

小紀--maven專案打包釋出到linux

0.專案結構 ddoe-server-all是將前面的專案都整合在一起,並提供配置檔案server.xml以及主啟動類啟動專案。 1.maven打包 採用maven-assembly自定義包結構。詳見之前的blog: 依賴的專案需要先打包

Android studio2.3.3專案打包釋出apk成功,安裝失敗

今天我遇到了一個安卓專案在打包釋出後無法安裝,很是鬱悶,折騰了一下午,最後解決了,在這裡寫下總結,希望以後有遇到相同問題困擾的朋友可以帶來幫助。首先,我的工程中的設定裡的run install是關閉的,我沒有試過開啟的狀態下發布出來的應用能不能順利安裝,在網上搜索據說這個開啟

專案打包釋出提示問題解決

you have a valid ios distribution certificate on the developer website,but it is not installed locally,if your signing identity is instal

VS2010專案打包釋出和程式碼混淆的一起操作

1 把專案的生成路徑改成Release(通過專案的屬性-生成來修改) 2 把整個Release資料夾拷到另外一個地方,然後用防止反編譯軟體來生成新的exe,再覆蓋掉 3 在打包專案裡面把覆蓋完後的Release資料夾裡面內容新增進來,生成快捷方式以及解除安裝在此不詳細說明

python:PyInstaller打包釋出單個檔案錯誤struct.error: argument for 's' must be a string解決

用PyInstaller的-F選項打包程式為單個檔案時報錯了,經過研究已經解決 將檔案C:\Python27\Lib\site-packages\PyInstaller-2.1-py2.7.egg\PyInstaller\loader\pyi_carchive.py 中第8

Angular專案打包釋出到IIS,開啟網站無法加載出內容的問題

首先angular專案打包可以執行cmd命令列【ng build --prod --aot】 ,成功後會在根目錄下生成dist資料夾,我們只需將該資料夾拷貝到伺服器,然後IIS上新增站點指向對應的資料夾即可;一般情況下都是能正常訪問網站的,以至於網站內容無法顯示出來則是瀏覽器

SpringBoot專案打包釋出Linux環境

環境 Linux機器環境:CentOS 7.4 64位 + JDK8 + MySql5.6.41 + Nginx-1.1.10 框架:Spring Boot v2.0.4.RELEASE, Spring v5.0.8.RELEASE 安裝JDK yu

python程式打包釋出方法整理

相關配置: Anaconda 4.2.0 (64-bit) Python 3.5.2 如果只是單一的python程式,打包釋出***.exe的步驟如下: 1.pip install pyinstaller 2.【Enter+R】開啟cmd 3.cd 到新建的檔案目錄

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式)

QT5的程式打包釋出(將QT5的工程專案打包成一個exe程式) 最近,在學習QT5的過程中,想嘗試著把自己寫的工程程式給打包釋出出來,在任何一臺windows系統都能執行,這樣就不會限於電腦需不需要安裝QT安裝包了。 首先,先介紹自己使用的環境。我使用的QT版本是。我的電

python將GUI專案打包成exe檔案

此專案分為兩步: GUI編寫程式 pyinstaller打包軟體 所用到的第三方庫: tkinter pyinstaller 具體實現 1. GUI介面 本次主要講解如何打包,所以在此只是設計一個十分簡單GUI介面本次主要講解如