使用pip从github子目录安装软件包

3
我正尝试从GitHub存储库中的源目录安装 Python 包。根据Python包装手册,源目录包含一个setup.cfg而不是旧的setup.py
我的代码遵循Python包装教程 - 父目录包含元数据,src子目录包含真正的包和一个__init__.py文件。您可以在https://github.com/adamatan/github-packages-python找到它。
本地安装方法有两种:使用python -m build构建本地distwheel并使用pip install <path_to_wheel>安装wheel;或者直接使用`pip install packaging_tutorial` 安装源代码。这两种方法都有效。
.
├── 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.

我的问题

我该如何从Github上的源代码安装example_package包?


注意:Git只是这里的底层传输/检索系统,并不涉及实际答案。 (即使GitHub也不是真正相关的,它只是存储位置。整个问题都是pip问题。) - torek
1个回答

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"

引用手册的说法:

pip在处理VCS URL时会查看2个片段:

egg:用于指定“项目名称”,以供pip的依赖关系解析逻辑使用。例如:egg=project_name

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


感谢您在自己的问题上发布答案,因为它今天也帮助了我!也许您可以将其标记为“已接受的答案”,以帮助未来的读者? - Steven Robyns
为什么不检查那个绿色箭头以接受您自己的答案呢? - WestCoastProjects

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接