Сообщение об ошибке "malformed htpasswd file" при запуске pypi-сервера

При запуске pypi-сервера я получаю сообщение об ошибке "неправильный файл htpasswd". Я получаю сообщение об ошибке, даже если файл.htpasswd не существует. Что является причиной ошибки?

Вот весь Traceback:

C:\Data>pypi-server -p 8080 -P packages\.htaccess packages
Traceback (most recent call last):
  File "c:\python27\lib\runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "c:\python27\lib\runpy.py", line 72, in _run_code
    exec code in run_globals
  File "C:\Python27\Scripts\pypi-server.exe\__main__.py", line 9, in <module>
  File "c:\python27\lib\site-packages\pypiserver\__main__.py", line 293, in main
    app = pypiserver.app(**vars(c))
  File "c:\python27\lib\site-packages\pypiserver\__init__.py", line 124, in app
    config, packages = core.configure(**kwds)
  File "c:\python27\lib\site-packages\pypiserver\core.py", line 47, in configure
    htPsswdFile = HtpasswdFile(c.password_file)
  File "c:\python27\lib\site-packages\passlib\apache.py", line 583, in __init__
    super(HtpasswdFile, self).__init__(path, **kwds)
  File "c:\python27\lib\site-packages\passlib\apache.py", line 166, in __init__
    self.load()
  File "c:\python27\lib\site-packages\passlib\apache.py", line 236, in load
    self._load_lines(fh)
  File "c:\python27\lib\site-packages\passlib\apache.py", line 261, in _load_lines
    key, value = parse(line, idx+1)
  File "c:\python27\lib\site-packages\passlib\apache.py", line 590, in _parse_record
    % lineno)
ValueError: malformed htpasswd file (error reading line 1)

У меня есть следующая структура папок:

C:\Data\packages\.htaccess 
C:\Data\packages\.htpasswd

Содержимое файла.htaccess:

AuthName "Under Development"
AuthUserFile C:\Data\packages\.htpasswd
AuthType basic
Require valid-user

Содержимое файла.htpasswd:

user:$apr1$zYBRb3n6$PBrNqfGoyb9ZQC5hGuRJN0

1 ответ

Решение

Pypiserver не поддерживает .htaccess файлы; это функция только для Apache. он просто использует .htpasswd формат файла от Apache.

Кроме того, htpasswd файл лучше не размещать внутри packages папка, чтобы pypiserver не смог ее обслужить по ошибке и раскрыть ее содержимое.

Поэтому переместите файл htpasswd, например, в родительскую папку, удалите префикс точки (не нужно скрывать / специальный) и измените команду запуска:

move packages\.htpasswd .\htpasswd
del packages\.htaccess
pypiserver -p 8080 -P htpasswd packages
Другие вопросы по тегам