【发布时间】:2014-08-18 01:51:21
【问题描述】:
有没有办法将额外的 Python 包索引 (ala pip --extra-index-url pypi.example.org mypackage) 与 setup.py 一起使用,以便运行 python setup.py install 可以找到托管在 pypi.example.org 上的包?
【问题讨论】:
标签: python pip packaging setup.py pypi
有没有办法将额外的 Python 包索引 (ala pip --extra-index-url pypi.example.org mypackage) 与 setup.py 一起使用,以便运行 python setup.py install 可以找到托管在 pypi.example.org 上的包?
【问题讨论】:
标签: python pip packaging setup.py pypi
我想发布一个最新的答案,因为两个最重要的答案都已过时; easy_install 的使用已被 setuptools 弃用。
https://setuptools.pypa.io/en/latest/deprecated/easy_install.html
Easy Install 已弃用。不要使用它。而是使用点子。如果您认为需要 Easy Install,请联系 PyPA 团队(pip 或 setuptools 的票很好),描述您的用例。
请使用pip 继续前进。您可以执行以下操作之一:
pip 命令提供--index-url 标志pip.conf文件中定义index-url
PIP_INDEX_URL环境变量【讨论】:
使用 Dockerfile 时找到解决方案:
RUN cd flask-mongoengine-0.9.5 && \
/bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple >> setup.cfg && \
python setup.py install
/bin/echo -e [easy_install]\\nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple 将存在于文件 setup.cfg 中:
[easy_install]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
【讨论】:
setup.cfg 文件,一个 Dockerfile 并且一切正常!
以下对我有用(开发,而不是安装):
$ python setup.py develop --index-url https://x.com/n/r/pypi-proxy/simple
https://x.com/n/r/pypi-proxy/simple 是本地 PyPI 存储库。
【讨论】:
python setup.py install --help 没有任何与--index-url 相关的参数
setuptools 在后台使用 easy_install。
它依赖于 setup.cfg 或 ~/.pydistutils.cfg,如 here 所述。
packages 的额外路径可以用find_links 在这些文件中定义。您可以使用 index_url 覆盖注册表 url,但不能提供 extra-index-url。以下示例受文档启发:
[easy_install]
find_links = http://mypackages.example.com/somedir/
http://turbogears.org/download/
http://peak.telecommunity.com/dist/
index-url = https://mypi.example.com
【讨论】:
如果你是包的维护者,并且你想在 PyPi 以外的地方为你的包托管一个或多个依赖项,你可以在你的发行版的 setup.py 文件中使用 setuptools 的 dependency_links 选项。这允许您提供一个明确的位置来放置您的包。
例如:
from setuptools import setup
setup(
name='somepackage',
install_requires=[
'somedep'
],
dependency_links=[
'https://pypi.example.org/pypi/somedep/'
]
# ...
)
如果您托管自己的索引服务器,则需要提供指向包含每个鸡蛋实际下载链接的页面的链接,而不是列出所有包的页面(例如https://pypi.example.org/pypi/somedep/,而不是https://pypi.example.org/)
【讨论】:
dependency_links,但没有说明改用什么。
您可以在 requirements.txt 文件中包含--extra-index-urls。见:http://pip.readthedocs.org/en/0.8.3/requirement-format.html
【讨论】:
setup.py 所做的事情(我们可以假设使用setuptools)并且IIUC requirements.txt 仅由pip 兑现
--extra-index-urls。它唯一需要的是带有 deps 版本详细信息等的字符串列表。requests>=2.19
据我所知,你不能这样做。 你需要告诉 pip 这个,或者像你提到的那样传递一个参数,或者在用户环境中设置它。
检查我的 ~/.pip/pip.conf:
[global]
download_cache = ~/.cache/pip
index-url = http://user:pass@localpypiserver.com:80/simple
timeout = 300
在这种情况下,我的本地 pypiserver 也代理了 pypi.python.org 中的所有包,所以我不需要添加第二个条目。
【讨论】: