You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何避免通过Github Workflows发布包到TestPyPI/PyPI时生成*.egg文件

问题

使用GitHub Workflows构建并发布Python包到TestPyPI时,本地构建仅生成2个文件,但通过Workflow的yml文件构建时会额外生成*.egg文件,且出现相关错误,如何避免生成该*.egg文件?

附上Workflow配置代码:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
  # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
  - uses: actions/checkout@v3

  # Sets up python3
  - uses: actions/setup-python@v3
    with:
      python-version: 3.8 

  # Installs and upgrades pip, installs other dependencies and installs the package from setup.py
  - name: "Installs and upgrades pip, installs other dependencies and installs the package from setup.py"
    run: |
      # Upgrade pip
      python3 -m pip install --upgrade pip
      # Install build deps
      python3 -m pip install setuptools wheel twine
      # If requirements.txt exists, install from it
      if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
      # Install the package from setup.py
      python3 setup.py install

# Tests with unittest
#  - name: Test with unittest
#    run: |
#      cd tests
#      python3 -m unittest discover
#      cd ..

  # Upload to TestPyPI
  - name: Build and Upload to TestPyPI
    run: |
      python3 setup.py sdist bdist_wheel
      python3 -m twine upload --verbose dist/*
    env:
      TWINE_USERNAME: __token__
      TWINE_PASSWORD: ${{ secrets.TWINE_TEST_TOKEN }}
      TWINE_REPOSITORY: testpypi
解决方案
  • 删掉多余的setup.py install命令
    你当前Workflow里执行的python3 setup.py install是本地安装包的操作,会自动生成*.egg-info和*.egg文件,而构建发布包完全不需要这一步,直接移除这行命令即可。

  • 用pip build替代旧的setup.py构建命令
    官方已经不推荐使用setup.py sdist bdist_wheel这种旧方式,改用pip build能更规范地生成sdist和wheel包,同时避免多余文件生成。修改上传步骤的命令:

    python3 -m pip build --outdir dist .
    python3 -m twine upload --verbose dist/*
    
  • 优化后的Workflow关键步骤示例
    修改后的安装和上传步骤应该是这样:

    - name: Install dependencies
      run: |
        python3 -m pip install --upgrade pip
        python3 -m pip install setuptools wheel twine
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    
    - name: Build and Upload to TestPyPI
      run: |
        python3 -m pip build --outdir dist .
        python3 -m twine upload --verbose dist/*
      env:
        TWINE_USERNAME: __token__
        TWINE_PASSWORD: ${{ secrets.TWINE_TEST_TOKEN }}
        TWINE_REPOSITORY: testpypi
    

内容的提问来源于stack exchange,提问作者arunkumar-js25

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:43:16