我需要设置一个私有 PyPI 存储库。我意识到它们有很多可供选择,在四处浏览之后,我选择了djangopypi2 ,因为我发现它们的安装说明最清晰并且项目处于活动状态。
我以前从未使用过 Django,所以这个问题可能真的是一个 Django 问题。我按照说明使用以下命令启动了应用程序:
$ gunicorn_django djangopypi2.website.settings
该存储库正在按我的意愿工作。配置“~/.pypirc”后,我可以使用以下方式上传包:
$ python setup.py sdist upload -r local
在使用 'extra-index-url' 配置 '~/.pip/pip.conf' 后,我可以使用以下方法安装软件包:
$ pip install <package-name>
但是,任何人都可以浏览和下载我的包。似乎仅在上传包时才需要身份验证。我尝试使用此示例要求登录所有页面: Best way to make Django's login_required the default
并设置:
LOGIN_REQUIRED_URLS = (
r'/(.*)$',
)
LOGIN_REQUIRED_URLS_EXCEPTIONS = (
r'/users/login(.*)$',
r'/users/logout(.*)$',
)
现在 webgui 需要在所有页面上登录,因此该部分按预期工作,但我无法再从命令行使用 pip 和上传实用程序。
我尝试使用'pip.conf'中的extra-index-url设置'pip install xxx',如下所示:
extra-index-url = http://username:password@127.0.0.1:8000/simple/
但它说“根本找不到 xxx 的发行版”
'python setup.py sdist upload' 给出:
Submitting dist/xxx-0.0.1.tar.gz to http://127.0.0.1:8000/
Upload failed (302): FOUND
所以问题是,如何使身份验证能够从“pip”和“python setup.py register/upload”工作?