python - 设置子模块依赖

标签 python python-3.x setuptools distutils

我们有一个 python 包,它也是一个 git 仓库。它依赖于其他 python 包,它们本身就是 git repos。我们制作了前者的后者 git 子模块。 这些都不是公开的,所以没有 PyPI。

与使用子模块依赖项安装相关的其他问题均不符合我们的模式。我的问题不是关于使用 setuptools 查找(子)包,也不是关于相对导入。

这是我们的结构:

package-repo/
    setup.py
    setup.cfg
    README.md
    .gitignore
    .gitmodules
    .git/
    submodule-repo/
        .git/
        .gitignore
        setup.py
        setup.cfg
        README.md
        submodule/
            __init__.py
            moduleX.py
            moduleY.py
    package/
        __init__.py
        moduleA.py
        moduleB.py
        subpackage1/

与 requirements.txt 的情况一样,我天真地认为下面的事情会奏效:

from setuptools import setup

setup(name='package',
      version='0.4.1',
      description='A package depending on other self made packages',
      url='git.ownnetwork.com',
      author='wli',
      author_email='wli@',
      license='Proprietary',
      packages=['package','package.subpackage1'],
      include_package_data=True,
      python_requires='>=3.7',
    classifiers=[
        'Natural Language :: English',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Programming Language :: Python :: 3.9',
    ],
      install_requires=["SQLAlchemy",
                        "pandas",
                        "./submodule-repo"])

它不起作用。

另一种方法是在 packages 中添加子模块,并在 package_dir 中指明其目录。好吧,它并没有那么好用,如果在安装依赖模块时无法安装它,那么在“子模块”中制作 setup.py 有什么意义呢? 我只想安装它而不必将其放在 PyPI 上或创建虚拟 PyPI 服务器,这太过分了,或者必须指示要做什么(即 pip install ./submodule-repo/ ) 在 README.md 中,这是不雅的。

路在何方?我是否在 distutils 或 setuptools 文档中遗漏了它?

最佳答案

您需要指定从何处安装子模块。

install_requires=[
    'SQLAlchemy',
    'pandas',
     # Your private repository module
    '<dependency_name> @ git+ssh://git@github.com/<user_name>/<repo_name>@<branch>'
]

关于python - 设置子模块依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69551065/

相关文章:

Python错误 'numpy.float64'对象无法解释为整数

Python 包结构,setup.py 用于运行单元测试

python - 如何比较Python字典列表的无序相同性?

python - 使用 choice() 和 randint() 从 2 个范围中获取 1 个数字

python - django项目中搜索功能的实现

python - 试图使用正则表达式在python中实现功能以验证输入?

Python cx_freeze 和 setuptools

python - 在你的包的 setup.py 中使用 setuptools——你如何有条件地安装脚本?

python - PyPandoc 与 PyInstaller 结合使用

python - 使用 matplotlib 的任意键或图例