Setup.py'de özel bağımlılık bağlantıları nasıl ele alınmalıdır?


10

İş yerinde özel bir pypi sunucusu kullanıyoruz. Bu pypi sunucusu bir bağımlılık bağlantısı olarak belirtilmiştir:

...
from setuptools import setup

config = ConfigParser.ConfigParser()
rc = os.path.join(os.path.expanduser('~'), '.pypirc')
config.read(rc)
dependency_links = [
    'https://{}:{}@<private_url>'.format(
        config.get('dc', 'username'), config.get('dc', 'password'))]

setup(
    dependency_links=dependency_links,
    ...)

Çoğu vakada bu iyi çalışıyor. Ancak, bir süre önce bir istemci sunucuya paketleri kurmamız gerekiyordu. Bunun için .pypircherhangi bir paket kurmadan önce geçerli bir kopyayı kopyalamamız gerekiyordu .

Ayrıca yukarıdaki kod sadece kirli bir kesmek gibi geliyor.

Sabit kodlama kimlik bilgileri olmadan güvenli bağımlılık bağlantılarını belirtmenin doğru yolu nedir?


1
Ne demek istediğini anlıyorum. O değil o bir hack kirli, ancak bu her paket bazında bağımlılık yönetimi ile kimlik doğrulama birleştirilmesi anlamına gelir. Bu yaklaşım taşınabilir veya ölçeklenebilir değildir.
Joel Cornett

Yanıtlar:


1

Bu hiç de makul ve kirli bir kesmek gibi görünüyor.

  1. Kimlik bilgileri için bir yapılandırma dosyası var
  2. Özel URL + kredilerini bağımlılıklara enjekte etmenin bir yolu var

İş yapılıyor ve iyi yapılıyor, bunu daha iyi yapmanın tek yolu, bunu belgelemek ve birden fazla farklı kurulumda veya birden fazla pypi sunucusunda denemek ve çıkan sorunları çözmek.



0

Bu çözümü kullanırken çok dikkatli olun. Belgelerde belirtildiği gibi :

Ayrıca, bir .egg dosyası yüklenirken kullanılacak EasyInstall gibi araçların kullanımı için yumurtanın meta verilerine yazılır.

Yani, kimlik bilgileriniz .egg. setuptoolsKaynak kodu üzerinden köklenme yoluyla, dahili olarak easy_installbağımlılıkları yüklemek için komut kullanıyor gibi olduğunu öğrendim . Bu nedenle, aşağıdakilerinizi setup.cfgözel bir repo almasına neden olur:

[easy_install]
index_url=https://username:password@your.repo/simple

Bu hala kimlik bilgilerinizin terminali yüklerken terminale yazdırdığı bir snafuya sahiptir, ancak en azından dağıtımınıza son vermez. Bu çözümün dizin URL'nizin yerini aldığını unutmayın, bu nedenle özel repo'nuz da herkese açık olanı yansıtmalıdır. Açık bir şekilde dizin URL'leri ekleme desteği görmedim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.