【问题标题】:Install package which has setup_requires from local source distributions从本地源分发安装具有 setup_requires 的软件包
【发布时间】:2014-12-05 00:59:50
【问题描述】:

获取以下包含 setup_requires 的简单包:

from setuptools import setup
setup(name='my_package', setup_requires=['cython'])

假设我已完成以下操作以将其构建到源代码分发中:

$ python setup.py sdist

并下载了 Cython 的源代码分发

$ pip install --download ./dist/ --no-use-wheel Cython

所以现在我有:

$ ls dist/
my_package-0.0.0.tar.gz
Cython-0.21.1.tar.gz

我想做的是使用--find-links等的某种组合将软件包安装在网络隔离的机器上。

我想我可以做类似的事情

pip install --no-index --find-links="file:///$(pwd)/dists" dist/my_package-0.0.0.tar.gz

但是我得到一个看起来像这样的错误:

No local packages or download links found for cython(此处为全文:http://paste.pound-python.org/show/IxmzEEfQ5yZRU45i2FBM/

我尝试过的失败:

设置以下

[easy_install]
allow_hosts = ''
find_links = file:///$(pwd)/emr-sdists

在:

/usr/lib/python2.6/distutils/distutils.cfg
~/.pydistutils.cfg
./setup.cfg

我目前正在使用 docker 的 --net none 设置来帮助调试它,如果它可以让您更轻松地进行复制。

【问题讨论】:

    标签: python pip setuptools distutils


    【解决方案1】:

    问题(除了您的--find-links 被拼写为dists 而不是dist)是pip 安装包的第一件事是运行python setup.py egg_info,而无需传递任何包- 查找信息。 Pip 实际上并不想要 setuptools 安装任何依赖项!它希望 setuptools 将依赖项输出为 egg_info,以便 pip 可以读取它们并自行获取它们。

    setup_requires 中的依赖项总是 安装在any 调用setup.py 时。我什至可以说setup_requires 与 pip 完全不兼容。

    另一种方法是......只需将您的构建代码放在build 步骤中。在所有依赖项都安装完成之前,Pip 不会尝试构建您的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 2016-07-29
      • 2017-11-29
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多