setuptools、easy_install与自定义pypi服务器

8 投票
2 回答
6183 浏览
提问于 2025-04-17 16:42

我有一个自定义的 pypi 服务器,现在想知道怎么把所有指向 https://pypi.python.org/ 的请求都转到我的自定义服务器上?

我希望用户在使用 pipeasy_install 安装包的时候,不用记得加上 -i-f 这些参数,同时也希望在有人用 python setup.py installsetuptools 的时候,能自动使用我设置的服务器,这样他们在 setup.py 里写的 install_requires 就能正常工作。

有没有什么全局的配置或者设置,可以让这些不同的方法都指向我的本地服务器?我想过用一些网络代理的方式,把 http://pypi.python.org/ 的请求转到我的自定义服务器上,但可惜这不是一个可行的选项。

谢谢!

2 个回答

1

你需要修改两个文件:

对于 distutils

  • 配置文件:文档

    • ~/.pydistutils.cfg 是 Linux 系统的配置文件,
    • $HOME/pydistutils.cfg 是 Windows 系统的配置文件。
  • 文件内容:

    [easy_install]
    index_url = YOUR_URL
    

这个配置和像 python setup.py install 这样的命令有关。

对于 pip

  • 配置文件:文档

    • ~/.pip/pip.conf 是 Linux 系统的配置文件,
    • $HOME/pip/pip.conf 是 Windows 系统的配置文件。
  • 文件内容:

    [global]
    index-url = YOUR_URL
    

这个配置和 pip install mypackage 这样的命令有关。

7

下面的配置会关闭 pypi 这个软件库的索引,让你的索引成为 pipeasy_install 唯一使用的索引。setuptools 的 install 命令其实就是一个快捷方式,用来在当前项目上运行 easy_install 命令。所以,这个方法也可以用。

# Add the following to ~/.pydistutils.cfg for easy_install
[easy_install]
index_url = http://localhost:8000/


# Add the following to ~/.pip/pip.conf for pip
[global]
index-url = http://localhost:8000/

想了解更多信息,可以查看 easy_installpip 的文档。

你可以给用户提供一个简单的 Python 脚本,帮助他们创建这些配置文件。

撰写回答