как создать локальный собственный индекс репозитория pypi без зеркала?
У нас есть несколько собственных пакетов python, и мы хотим создать локальный репозиторий pypi для них, используя простой интерфейс, такой как https://pypi.python.org/simple/
Этот репозиторий я хочу создать только для локального без зеркал из соображений безопасности, и он будет находиться под контролем apache
Команда pypimirror looks должна быть инициализирована один раз, что требует зеркального отображения.
Как я могу создать простой индекс PyPi на основе локальных пакетов python.
Любое другое простые сценарии для этого ?
5 ответов:
Раз уж вы попросили ответить здесь:
Взгляните на
pip2pi, похоже, это именно то, что вы ищете.
У нас была похожая потребность в моей компании. В принципе, как мы можем загрузить пакеты с" закрытым исходным кодом " в индекс, будучи в состоянии установить их, как если бы они были на PyPI?
Мы спонсировали проект под названием devpi, который действует как кэш PyPI (пакеты, к которым вы получаете доступ из PyPI, будут кэшироваться на вашем сервере), а также мощный и быстрый сервер индексирования. Документация доступна по адресу http://doc.devpi.net/latest/.
Далее по дорожной карте идет зеркальное отображение для нескольких гео развертывание. Чтобы пнуть шины на вашей машине, потребуется около 5 минут (смотрите руководства по быстрому запуску). Наконец, devpi совместим как с pip, так и с easy_install (то есть вам не нужен клиент devpi, установленный на вашем компьютере).
Надеюсь, это поможет.
В зеркале нет ничего особенного, и вы можете использовать
mod_rewrite, чтобы настроить его самостоятельно.
Поместите пакеты в каталог, сопоставленный с URL-адресом. Здесь я использую
/url/to/my/pypi/Пример. Иерархия папок должна быть/foo/bar/simple/[name of package]/[name of tarball]Добавьте следующее в
.htaccessили глобальную конфигурацию для того каталога, в котором находятся пакеты. Последний блок строк-это возврат к Глобальному индексу pypi:Options +Indexes RewriteEngine On RewriteRule ^/robots.txt - [L] RewriteRule ^/icons/.* - [L] RewriteRule ^/index\..* - [L] RewriteCond /foo/bar/simple/ !-f RewriteCond /foo/bar/simple/ !-d RewriteRule ^/(.*)/?$ http://pypi.python.org/ [R,L]Обновите свой
~/.pip/pip.confдо точки в новое хранилище:[global] index-url = http://localhost/url/to/my/pypi/Или используйте опцию
-i http://localhost/url/to/my/pypi/в командной строке.
Если вы говорите о запуске simplepypi, то у вас будет свой сервер для добавления пакетов и их обслуживания. Процитируем документацию:
- Running this on the setup.py of your favorite package: python setup.py sdist upload -r localЕсли бы вы использовали либо
os.walk, либоglob.globв вашем локальном каталоге site-packages, вы могли бы быстро отфильтроватьsetup.pyв каждом из пакетов/каталогов и вызвать вышеописанное на них.Если вам просто нужно создать каталог tar.файлы gz в комплекте с a .html-список из них, то вы можете использовать glob.шарик на самом верху уровень вашего сайта-каталог пакетов-tar.gz каждый каталог по очереди и добавить результирующее имя файла в список - вы можете создать свой индекс.html из этого списка.
Для этого можно использовать любой из большого числа шаблонных движков или сгенерировать его самостоятельно:
import glob filelist = glob.glob("*.tar.gz") tags = ['<A href="file:Where/%s">%s</A>' % (s,s) for s in tags] head = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE></TITLE> <META NAME="Generator" CONTENT="Python Script"> <META NAME="Keywords" CONTENT="Cheeseshop"> <META NAME="Description" CONTENT="List of local python packages"> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?"> """ tail = """</BODY></HTML>""" tags.insert(0,head) tags.append(tail) page = "\n".join(tags)Затем сохраните или обслужите страницу.
Самый простой способ-организовать дистрибутивные файлы пакета в пакеты с именем dirs и запустить простой HTTP-сервер. Никаких дополнительных пакетов не требуется, stdlib Python достаточно. Пример структуры каталогов:
└── repodir ├── setuptools │ └── setuptools-38.1.0-py2.py3-none-any.whl │ └── setuptools-38.1.0.zip │ └── setuptools-39.2.0-py2.py3-none-any.whl │ └── setuptools-39.2.0.zip ├── wheel │ └── wheel-0.31.1-py2.py3-none-any.whl ...Запуск сервера:
$ cd repodir/ $ python3 -m http.server -p 9000 $ # or for Python 2: $ python2 -m SimpleHTTPServer -p 9000Местное РЕПО работает. Теперь вы можете передать РЕПО в
pip:$ pip install wheel --extra-index-url=http://127.0.0.1:9000Или даже сохраняйте URL РЕПО в
pip.conf, Чтобы не вводить его каждый раз:# pip.conf [global] extra-index-url=http://127.0.0.1:9000
Comments