Сообщение об ошибке "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