On Fri, Sep 11, 2020 at 2:11 PM Robert Bradshaw <rober...@google.com> wrote:

> Hmm... this is a difficult question. I think adding support for a pip.conf
> probably makes the most sense, despite it being yet another option.
>

+1 - I think this is a good flag to add. I heard similar user requests for
passing specific flags to pip before. Supporting a generic way with an
optional flag would address those requests.


>
> Another alternative is to simply pre-install the dependencies you want (or
> even just override /etc/pip.conf) in a custom container.
>
> On Wed, Sep 9, 2020 at 5:27 PM Chad Dombrova <chad...@gmail.com> wrote:
>
>> Hi all,
>> We are running into problems trying to use our own pypi mirror with Beam.
>> For those who are not well versed in the esotera of python package
>> management, pip provides a few ways to specify urls for the pypi index
>> server:
>>
>>    - command line
>>    
>> <https://pip.pypa.io/en/stable/reference/pip_install/#install-index-url>[1]:
>>    via --index-url
>>    - environment variables
>>    <https://pip.pypa.io/en/stable/user_guide/#environment-variables>[2]:
>>    via PIP_INDEX_URL. In Beam, we don’t have any way to influence the
>>    environment of the boot process that runs pip install.
>>    - pip.conf <https://pip.pypa.io/en/stable/user_guide/#config-file>[3]:
>>    we could provide this as an artifact, but we don’t have any way of placing
>>    it in the correct location (e.g. /etc/pip.conf) on the instance that
>>    runs pip install.
>>    - requirements.txt files can specify certain pip install flags
>>    
>> <https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format>[4],
>>    such as --index-url. As such, passing a requirements file via
>>    --requirements_file would theoretically work, but we also want to be
>>    able to provide dev packages as wheels via --extra_package, which
>>    would be installed independently from the requirements file and thus use
>>    the default pypi index. We may be able to upload our wheel as an artifact
>>    and refer to it using a local path in the requirements file, but this
>>    solution seems a bit brittle as the local artifacts path is different for
>>    each job.
>>
>> Are there any known solutions to this problem? Here are some ideas:
>>
>>    - add support for providing a pip.conf as a known artifact type (akin
>>    to --requirements_file).  this is by far the most powerful and
>>    straightforward solution, but do we have the stomach for yet another cli
>>    option?
>>    - add support for providing a destination path for artifacts, which
>>    would let us install it into /etc/pip.conf. I can see strong
>>    safety/security concerns around this.
>>    - provide a guarantee that the working directory for the boot process
>>    is inside the artifact directory: then we could refer to wheels inside our
>>    requirements file using relative paths.
>>
>> We're happy to make a pull request to add support for this feature, but
>> it'd be great to have some input on the ideal solution before we begin.
>>
>> thanks!
>> -chad
>>
>> [1]
>> https://pip.pypa.io/en/stable/reference/pip_install/#install-index-url
>> [2] https://pip.pypa.io/en/stable/user_guide/#environment-variables
>> [3] https://pip.pypa.io/en/stable/user_guide/#config-file
>> [4]
>> https://pip.pypa.io/en/stable/reference/pip_install/#requirements-file-format
>>
>> -chad
>>
>>

Reply via email to