Python项目中如何在本地的setup.py中声明对本地Python包的依赖?

因为代码需要保密,依赖的本地包不能上传到 Pypi,也不能上传为一个可下载链接。

那我如何在用 setuptools 打包自己项目的同时把这个本地包也打进去?


Python项目中如何在本地的setup.py中声明对本地Python包的依赖?
1 回复

setup.py 里声明对本地包的依赖,直接用 dependency_links 已经过时了。现在主流是用 setuptoolssetup.cfgpyproject.toml,但如果你坚持用 setup.py,可以这样搞:

核心方法:用 install_requires 配合 dependency_links(旧式,不推荐)

from setuptools import setup

setup(
    name='your_project',
    version='0.1',
    install_requires=[
        'some_local_package @ file:///path/to/your/package',
    ],
)

更靠谱的方法:直接 pip install 本地路径 直接在项目里写个 requirements.txt

-e /path/to/your/package

然后在 setup.py 里:

from setuptools import setup

with open('requirements.txt') as f:
    install_requires = f.read().strip().split('\n')

setup(
    name='your_project',
    version='0.1',
    install_requires=install_requires,
)

现在更推荐用 pyproject.toml 在项目根目录创建 pyproject.toml

[build-system]
requires = ["setuptools", "wheel"]

[project]
name = "your_project"
version = "0.1"
dependencies = [
    "some_local_package @ file:///path/to/your/package",
]

如果本地包是你自己开发的 最好用 pip install -e /path/to/package 先装到环境里,这样 setup.py 里直接写包名就行:

setup(
    name='your_project',
    version='0.1',
    install_requires=['your_local_package'],
)

简单说,现在别折腾 dependency_links 了,直接用路径声明或者先 pip install -e 装本地包。

回到顶部