溫馨提示×

Ubuntu Python應用如何發布

小樊
50
2025-09-27 11:36:02
欄目: 編程語言

Ubuntu環境下Python應用的發布流程主要分為 Web應用部署(常見于Flask/Django等框架)和桌面可執行文件打包兩類場景,以下是具體步驟:

一、Ubuntu上部署Python Web應用(如Flask/Django)

1. 準備工作

  • 安裝基礎工具:確保Ubuntu系統安裝Python 3、pip及git(用于代碼管理):
    sudo apt update && sudo apt install python3 python3-pip git -y
    
  • 配置虛擬環境(隔離依賴,避免版本沖突):
    sudo apt install python3-venv -y  # 安裝venv模塊
    python3 -m venv myenv             # 創建虛擬環境(myenv為環境名)
    source myenv/bin/activate         # 激活環境(終端提示符會顯示(myenv))
    

2. 上傳與安裝依賴

  • 上傳代碼:通過git clone(若代碼托管在GitHub/Gitee)或scp(本地傳輸)將項目上傳至服務器:
    git clone https://github.com/your-username/your-webapp.git  # git方式
    # 或
    scp -r /local/path/to/project username@server_ip:/remote/path  # scp方式
    
  • 安裝依賴:進入項目目錄,通過requirements.txt安裝所有依賴(需提前在本地生成該文件:pip freeze > requirements.txt):
    pip install -r requirements.txt
    

3. 運行應用

  • 使用WSGI服務器(如Gunicorn,替代Python內置服務器):
    假設項目入口文件為app.py,應用對象為app(Flask)或application(Django),運行命令:
    pip install gunicorn  # 安裝Gunicorn
    gunicorn --bind 0.0.0.0:8000 app:app  # 綁定所有IP的8000端口
    
  • 配置反向代理(如Nginx,處理HTTP請求并轉發至Gunicorn):
    sudo apt install nginx -y  # 安裝Nginx
    sudo nano /etc/nginx/sites-available/yourapp  # 創建配置文件
    
    添加以下內容(替換your_domain_or_ip為域名或服務器IP):
    server {
        listen 80;
        server_name your_domain_or_ip;
        location / {
            proxy_pass http://127.0.0.1:8000;  # 轉發至Gunicorn
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    
    啟用配置并重啟Nginx:
    sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/  # 軟鏈接配置文件
    sudo systemctl restart nginx  # 重啟Nginx
    

4. 設置開機自啟(可選但推薦)

通過systemd創建服務,確保應用在服務器重啟后自動運行:

sudo nano /etc/systemd/system/my_python_service.service

添加以下內容(替換路徑和用戶):

[Unit]
Description=My Python Web Application
After=network.target

[Service]
User=your_username  # 替換為你的用戶名
ExecStart=/path/to/your/venv/bin/gunicorn --bind 0.0.0.0:8000 app:app  # 替換為虛擬環境中的Gunicorn路徑
Restart=always  # 失敗后自動重啟

[Install]
WantedBy=multi-user.target

啟用并啟動服務:

sudo systemctl enable my_python_service  # 開機自啟
sudo systemctl start my_python_service   # 立即啟動

二、Ubuntu上將Python應用打包為可執行文件(桌面應用)

若需將Python腳本轉換為無需安裝Python即可運行的可執行文件(如.exe或Linux二進制文件),可使用以下工具:

1. 使用PyInstaller(最常用)

  • 安裝PyInstaller
    pip install pyinstaller
    
  • 打包腳本:進入項目目錄,運行以下命令(--onefile生成單個可執行文件,省略則生成包含依賴的文件夾):
    pyinstaller --onefile your_script.py  # your_script.py為入口腳本
    
  • 獲取可執行文件:打包完成后,在dist/目錄下找到生成的可執行文件(如your_script,Linux下無后綴;Windows下為.exe)。

2. 使用cx_Freeze(適合復雜項目)

  • 安裝cx_Freeze
    pip install cx_Freeze
    
  • 創建setup.py文件(項目根目錄下):
    from cx_Freeze import setup, Executable
    setup(
        name="YourApp",
        version="0.1",
        description="Your application description",
        options={"build_exe": {"packages": ["os"], "excludes": ["tkinter"]}},  # 指定包含/排除的包
        executables=[Executable("your_script.py")]  # 入口腳本
    )
    
  • 打包應用
    python setup.py build
    
  • 獲取可執行文件:打包完成后,在build/目錄下找到生成的可執行文件。

3. 注意事項

  • 跨平臺問題:打包后的可執行文件僅能在當前操作系統運行(如Ubuntu打包的文件無法在Windows直接使用),需在目標平臺重新打包。
  • 資源文件:若應用包含圖片、配置文件等資源,需在打包時通過--add-data參數指定(如PyInstaller的--add-data "config.ini:.")。
  • 依賴檢查:確保虛擬環境中安裝了所有必要的依賴,否則打包后的文件可能無法運行。

以上流程覆蓋了Ubuntu環境下Python應用的主要發布場景,可根據應用類型(Web/桌面)選擇對應方法。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女