使用setuptools的从位置安装(Use setuptools to install from

2019-07-03 18:26发布

我有,我想在多个项目中使用的场地,一个框架,但我不希望我的框架提交的PyPI。 有反正我可以告诉我的setup.py从一个特定的位置安装框架?

这是我目前的setup.py

from setuptools import setup

setup(
    name='Website',
    version='0.2.1',
    install_requires=[
        'boto>=2.6',
        'fabric>=1.4',
        'lepl>=5.1',
        'pygeoip>=0.2.4',
        'pylibmc>=1.2.3',
        'pymongo>=2.2',
        'pyyaml>=3.1',
        'requests>=0.12',
        'slimit>=0.7.4',
        'thrift>=0.8.0',
        'tornado>=2.3',
    ],
)

这些依赖实际上是为我的框架,所有的依赖关系,所以如果我可以包括它在某种程度上我只能在这里列出的框架。

Answer 1:

它看起来像您的所有要求都是公开(PyPI上),而你不需要他们的特定版本,只是“足够新”。 在2016年,当你可以在具有最近十岁上下的版本大家算pip ,没什么好说的事情。 如果你只是pip install . 从源目录或pip install git+https://url/to/package或类似的,它只会拉断网的依赖关系的最新版本。 你的包是不是PyPI上的事实不会从那里找到它的依赖性停止点子。

或者,如果你想藏匿他们所有本地,你可以建立一个本地的PyPI索引。 虽然在这种情况下,它可能会更简单,以你的包推到同一个本地索引,并从那里安装。

如果您有什么需要更复杂,一个需求文件可以照顾这对你。

特别是,如果您需要将包分发给其他人在你的组织中谁可能没有你的团队的局部索引设置,或由于某种原因你不能设置在首位本地索引,你可以把所有的在要求必要的信息文件-或者,如果它是比较合适的,用于安装程序包(如果你坚持甚至工作的命令行上easy_install或古老的版本的pip )。

该文档提供了完整的详细信息,以及本博客文章解释了它非常漂亮,但短期的版本是这样的:

  • 如果你有一个本地的PyPI索引,提供--extra-index-url=http://my.server/path/to/my/pypi/

  • 如果你有,你可以拖放到封装的HTTP服务器,你可以在你的服务器启用了“自动索引目录内容”选项,只需提供--find-links=http://my.server/path/to/my/packages/

  • 如果你想使用本地文件(或SMB / AFP /等文件共享),创建只是链接到所有本地包一个简单的HTML文件,并提供--find-links=file:///path/to/my/index.html

同样,这些可以去一个“安装这个软件包,运行此”(或在命令行上curl | sh安装脚本),但通常你只想把它们放在一个需求文件。 如果是这样,请务必使用每个选项只有一个值(例如,如果要添加两个额外的指标,添加两个--extra-index-url PARAMS),并把每一个在其自己的行。

一个需求文件还允许您指定每个包的特定版本,所以你可以肯定的人与你开发和测试使用相同的代码,这是在这类情况通常是有用的部署。



文章来源: Use setuptools to install from location