如果想将南大源设置为默认源,则可能需要先更新 pip 版本:

pip install pip -U # 更新 pip 版本
pip config set global.index-url https://repo.nju.edu.cn/repository/pypi/simple # 修改源

由于是在第一次用户请求的时候从远程服务器获取文件,因此第一次请求部分大体积包(如 tensorflow )时,可能会出现以下错误:

  WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)")': /repository/pypi/packages/torch/1.8.0/torch-1.8.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)")': /repository/pypi/packages/torch/1.8.0/torch-1.8.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)")': /repository/pypi/packages/torch/1.8.0/torch-1.8.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)")': /repository/pypi/packages/torch/1.8.0/torch-1.8.0-cp39-cp39-win_amd64.whl
  WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)")': [uri]
ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Max retries exceeded with url: [url] (Caused by ReadTimeoutError("HTTPSConnectionPool(host='repo.nju.edu.cn', port=443): Read timed out. (read timeout=15)"))

这是由于初次请求,服务器去其他站下载的原因,稍后一会(2分钟左右)重新执行该命令即可.

pypi 私服

南京大学 pypi 仓库同时提供 pip 包托管服务,本校师生可以将自己编写的 python 脚本打包后发布到仓库中让其他人使用.此仓库文件并不会同步到其他镜像源.

从仓库获取文件

将上面提到的仓库地址改为 https://repo.nju.edu.cn/repository/pypi-nju/simple 即可.

使用此仓库请注意:

  • 此仓库会优先从官方库和其他源中获取包,如果你发布了同名包,会被其他来源的同名包覆盖,因此请不要也禁止发布同名包或者名称相近包;
  • 当仓库网络出现问题或者上游源出现问题时,可能会导致你下载到仓库其他人发布的同名包,这可能不是你想要的,甚至有风险;
  • 如果发现和上游仓库同名包,请填写统计表,管理员将会定期删除;
  • 如果发现恶意同名包或者类似包,请填写统计表,管理员将核实后采取措施.
  • 向仓库提交文件

    linux 用户打开终端并输入以下命令:

    vim ~/.pypirc
    

    windows 用户打开 powershell 或者 pwsh, 输入以下命令:

    notepad .pypirc

    在打开的文件中写入以下内容:

    [distutils]
    index-servers =
    [nju]
    repository: https://repo.nju.edu.cn/repository/pypi-releases/
    username: [学工号]
    password: [统一身份认证密码]
    

    在项目根路径执行:

    python setup.py check
    python setup.py sdist bdist_wheel upload -r nju
    

    更多关于 python 打包相关的内容,请参考相关链接.

  • 一经发布,文件不允许修改和删除
  • 发布过程中你的用户信息会被记录,因此请勿滥用.
  • 建议为你的包起一个合适的名字和有规则的版本号
  • 如果想配置多个发布仓库,请参考链接.
  •