使用setuptools从位置安装

时间:2012-11-13 00:24:21

标签: python setuptools pypi

我有一个我希望在多个项目中使用的网站框架,但我不想将我的框架提交给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',
    ],
)

这些依赖项实际上是我的框架的所有依赖项,所以如果我能以某种方式包含它,我只能在这里列出框架。

1 个答案:

答案 0 :(得分:2)

看起来您的所有要求都是公开的(在PyPI上),并且您不需要它们的特定版本,只需“足够新”。在2016年,当你可以依靠最近版本为pip的所有人时,真的无所事事。如果你只是来自源目录pip install .或类似的pip install git+https://url/to/package,它只会从网上提取最新版本的依赖项。你的软件包不在PyPI上的事实不会阻止pip在那里找到它的依赖。

或者,如果要将它们全部存储在本地,则可以设置本地PyPI索引。虽然在这种情况下,将包推送到同一个本地索引可能会更简单,并从那里安装它。

如果您需要更复杂的内容,requirements file可以为您处理。

特别是,如果您需要将软件包分发给组织中可能没有设置团队本地索引的其他人,或者由于某种原因您无法首先设置本地索引,那么您可以将所有必要的信息放在需求文件中 - 或者,如果更合适,则在用于安装程序包的命令行上(如果您遇到easy_install或古代版本的{{1} })。

文档提供了完整的详细信息,this blog post非常好地解释了它,但简短的版本就是这样:

  • 如果您有本地PyPI索引,请提供pip

  • 如果您有一台可以删除软件包的HTTP服务器,并且您可以在服务器中启用“自动索引目录内容”选项,只需提供--extra-index-url=http://my.server/path/to/my/pypi/

  • 如果您想使用本地文件(或SMB / AFP /等文件共享),请创建一个简单的HTML文件,只包含指向所有本地包的链接,并提供--find-links=http://my.server/path/to/my/packages/

同样,这些可以在“安装此软件包,运行此软件包”(或--find-links=file:///path/to/my/index.html安装脚本)的命令行中,但通常只是想将它们放在需求文件中。如果是这样,请确保每个选项只使用一个值(例如,如果要添加两个额外的索引,添加两个curl | sh参数)并将每个值放在自己的行上。

需求文件还允许您指定每个包的特定版本,因此您可以确保人们使用您开发和测试的相同代码进行部署,这在这些情况下通常很有用。