python setuptools取决于绝对路径

时间:2019-06-06 10:25:28

标签: python-3.x 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
      ]
     )

1 个答案:

答案 0 :(得分:0)

好的,我似乎可以使用直接引用链接

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