首页 > 解决方案 > python setuptools依赖于绝对路径

问题描述

我们有一个大的 git 结构,我们想在其中创建一些 python 库,其中一些引用另一个。由于我们一次提取所有 git,我们不希望设置工具通过 VCS 存储库引用相互引用。

目前我能做的是:

from setuptools import setup
import setuptools.command.install
import pip._internal
import os

try:
    era_root = os.environ.get("ERA_ROOT")
    if not os.path.isdir(era_root):
        raise ValueError("ERA_ROOT must point to a valid directory")
except KeyError as k:
    raise KeyError("Please specify the ERA_ROOT environment variable")

protobufsDependency = "{}/Products/PythonLibs/Protobufs".format(
    era_root)


class my_install(setuptools.command.install.install):

    def run(self):
        pip._internal.main(['install', '-I', protobufsDependency])
        setuptools.command.install.install.run(self)


setup(name='replication_tools',
      version='1.0',
      packages=["FakeAgent", "EventGenerator"],
      cmdclass={"install": my_install},
      )

然而,这是有问题的,因为如果有人使用 --user 或其他一些参数安装这个库,我将不得不在 pip._internal.main 中手动命名它们。所以我的问题是有什么方法可以直接用 setuptools.setup 引用 protobufsDependency,就好像它是一个 url 包一样?类似的东西(因为这不起作用,但类似的东西)

setup(name='replication_tools',
      version='1.0',
      packages=["FakeAgent", "EventGenerator"],
      install_requires=[
         protobufsDependency
      ]
     )

标签: python-3.xsetuptools

解决方案


好的,看来我可以使用直接参考链接

setup(name='replication_tools',
      version='1.0',
      packages=["FakeAgent", "EventGenerator"],
      install_requires=[
         "protobufs-generated @ file://C:/PathToMyLib"
      ]
     )

推荐阅读