title: multi pipenv cross microserivces python
body: <p>I have a project which was decomposed into 3 different microservices, let's call then A, B, and C.</p>
  
  <p>Each of services A and B holds their own Pipfile and Dockerfile (and the corresponding pipfile.lock).
  For example:</p>
  
  <p><strong>Service A</strong> Pipfile:</p>
  
  <pre><code>[[source]]
  name = "pypi"
  url = "https://pypi.org/simple"
  verify_ssl = true
  
  [packages]
  pandas= "*"
  nltk = "*"
  </code></pre>
  
  <p><strong>Service B</strong> Pipfile:</p>
  
  <pre><code>[[source]]
  name = "pypi"
  url = "https://pypi.org/simple"
  verify_ssl = true
  
  [packages]
  pandas= "*"
  tensorflow= "*"
  </code></pre>
  
  <p>and in each one of the <strong>separate</strong> Dockerfile (one for A and one for B) we deploy using :</p>
  
  <pre><code>RUN pipenv install --deploy --system --ignore-pipfile
  </code></pre>
  
  <p>Now, service C use both of the services code (A,B) so it's holds only Dockerfile which contains the lines:</p>
  
  <pre><code>WORKDIR ./A/
  RUN pipenv install --deploy --system --ignore-pipfile
  WORKDIR ./B/
  RUN pipenv install --deploy --system --ignore-pipfile
  </code></pre>
  
  <p>Which install dependencies from the two services.</p>
  
  <p>However, that architecture seems to be wrong as <code>pandas</code> package version must be the same as they meet in C and there are a lot of packages like <code>Pandas</code> in real life.</p>
  
  <p>One solution I thought about it's to specify <code>pandas</code> version and then each of the Pipfile, but then why should I write it twice? it against any coder instinct I have.</p>
  
  <p>Other solution, is to create Pipfile for C which will contain the joined dependencies (<code>pandas</code>) and in both of A and B Dockerfile deploy the corresponding Pipfile.lock and C Pipfile.lock, but that means that during development pipenv need to know two Pipfile and Pipfile.lock which is not supported. </p>
  
  <p>Any ideas?</p>