代码之家  ›  专栏  ›  技术社区  ›  Adam Matan

pip:从github源子目录安装一个包

  •  0
  • Adam Matan  · 技术社区  · 4 年前

    我正在尝试从中的源目录安装Python包 a github repo .根据 Python Packaging Manual ,源目录包含 setup.cfg 而不是旧的 setup.py .

    密码

    我的代码遵循 Python Packaging Tutorial -包含元数据的父目录,以及 src 子目录,其中包含一个子目录,该子目录本身带有和 __init__.py 文件在网上可以买到 https://github.com/adamatan/github-packages-python .

    本地安装-通过构建本地 dist wheel 使用 python -m build ,以及安装 具有 pip install <path_to_wheel> ,或者使用“pip install packaging_教程”安装源代码,效果很好。

    .
    ├── Dockerfile
    ├── LICENSE
    ├── Makefile
    ├── README.md
    └── packaging_tutorial
        ├── LICENSE
        ├── README.md
        ├── build_and_publish.sh
        ├── pyproject.toml
        ├── setup.cfg
        └── src
            └── example_package
                ├── __init__py
                └── example.py
    

    我试过什么

    SSH安装

    pip install git+ssh://git@github.com/adamatan/github-packages-python.git#egg=packaging_tutorial
    
    Collecting packaging_tutorial
      Cloning ssh://****@github.com/adamatan/github-packages-python.git to /private/var/folders/ty/43hxrncx4nl9n34kmq3w84300000gn/T/pip-install-oc4il6j7/packaging-tutorial_8d95646df03e40dab7f341209c8e71f5
      Running command git clone -q 'ssh://****@github.com/adamatan/github-packages-python.git' /private/var/folders/ty/43hxrncx4nl9n34kmq3w84300000gn/T/pip-install-oc4il6j7/packaging-tutorial_8d95646df03e40dab7f341209c8e71f5
    ERROR: File "setup.py" not found for legacy project packaging_tutorial from git+ssh://****@github.com/adamatan/github-packages-python.git#egg=packaging_tutorial.
    

    HTTPS安装

    pip install git+https://github.com/adamatan/github-packages-python.git#egg=packaging_tutorial
    Collecting packaging_tutorial
      Cloning https://github.com/adamatan/github-packages-python.git to /private/var/folders/ty/43hxrncx4nl9n34kmq3w84300000gn/T/pip-install-sgke7nr1/packaging-tutorial_61f519a8caca48cea01fe22fd5438936
      Running command git clone -q https://github.com/adamatan/github-packages-python.git /private/var/folders/ty/43hxrncx4nl9n34kmq3w84300000gn/T/pip-install-sgke7nr1/packaging-tutorial_61f519a8caca48cea01fe22fd5438936
    ERROR: File "setup.py" not found for legacy project packaging_tutorial from git+https://github.com/adamatan/github-packages-python.git#egg=packaging_tutorial.
    

    我的问题

    如何安装 example_package 在Github上从源代码获取的包?

    1 回复  |  直到 4 年前
        1
  •  3
  •   Adam Matan    4 年前

    解决方案很简单——我只需要使用 subdirectory 改为(或除此之外)标记 egg

    所以:

    pip install git+ssh://git@github.com/adamatan/github-packages-python.git#subdirectory=packaging_tutorial
    
    pip install git+https://github.com/adamatan/github-packages-python.git#subdirectory=packaging_tutorial
    

    或者:

    pip install "git+ssh://git@github.com/adamatan/github-packages-python.git#subdirectory=packaging_tutorial&egg=example-pkg-adamatan"
    

    引用 the manual :

    pip查看了VCS URL的两个片段:

    egg:用于指定在pips依赖项中使用的项目名称 解析逻辑。例如:egg=项目名称

    子目录:用于指定Python包的路径,当它 不在VCS目录的根目录中。例如:pkg_dir

    推荐文章