避免使用 dist-packages 中的 egg 版本

问题描述

所以,我想在我的项目中使用 python3-mapnik。为此,我必须使用 sudo apt install python3-mapnik 安装它。为了使该模块在我的 github 操作环境中可用,我需要修改 PYTHONPATH 环境变量,这是工作流程:

name: Python

on:
  push:
    branches-ignore:
      - 'staging*'
      - 'automated-tests'

jobs:
  python_utils_tests_page_0:
    runs-on: ubuntu-18.04
    services:
      postgres:
        image: cheewai/postgis:postgres-10.1
        env:
          # duplicated to avoid problems with current Codeship environment variables
          PG_USER: postgres
          PG_PASSWORD: postgres
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: test
        ports:
          - 5432:5432
        # needed because the postgres container does not provide a healthcheck
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
        with:
          python-version: '3.6'

      - uses: actions/cache@v2
        id: cache
        with:
          path: ${{ env.pythonLocation }}
          key: pip-${{ env.pythonLocation }}-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/requirements_dev.txt') }}
          restore-keys: pip-${{ env.pythonLocation }}

      - name: Install dependencies
        run: |
          sudo rm -rf /usr/lib/python3/dist-packages/six-1.11.0.egg-info
          sudo rm /usr/lib/python3/dist-packages/six.py
          curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
          python get-pip.py pip==21.0.1
          pip install -r requirements.txt
          pip install -r requirements_dev.txt

      - name: Install apt dependencies
        run: |
          echo "PYTHONPATH=/usr/lib/python3/dist-packages" >> $GITHUB_ENV
          sudo apt-get update
          sudo apt-get install gdal-bin
          sudo apt-get install build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
          sudo apt-get install libmapnik3.0 libmapnik-dev python3-mapnik

echo "PYTHONPATH=/usr/lib/python3/dist-packages" >> $GITHUB_ENV 的问题在于,该目录包含大量来自我使用的某些软件包(如 six 软件包)的旧版本的蛋。

起初我想:嘿,我可以删除那个pacakge,所以我添加了这两行:

sudo rm -rf /usr/lib/python3/dist-packages/six-1.11.0.egg-info
sudo rm /usr/lib/python3/dist-packages/six.py

但是后来我得到了一个错误,因为另一个 httplib2 的鸡蛋包含一个非常旧的版本。

所以,总而言之,我需要一种方法来使 python3-mapnik 包可用于 python 项目,但不能使该文件夹中存在的其余鸡蛋/包可用。为此,我想出了两个选项:

  • 删除整个 dist-packages 文件夹,我不知道它是坏的还是可能会破坏某些东西。
  • 在python中更改导入的首选项,我不知道该怎么做。

有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)