title: Howto deploy python applications inside corporate network
body: <p>First let me explain the current situation:</p>
  
  <p>We do have several <code>python</code> applications which depend on custom (not public released ones) as well as general known packages. These depedencies are all installed on the <code>system python</code> installation. Distribution of the application is done via <code>git</code> by source. All these computers are hidden inside a corporate network and don't have internet access.</p>
  
  <p>This approach is bit pain in the ass since it has the following downsides:</p>
  
  <ul>
  <li>Libs have to be installed manually on each computer :(</li>
  </ul>
  
  <p>How to better deploy an application? I recently saw <code>virtualenv</code> which seems to be the solution but I don't see it yet.</p>
  
  <p><code>virtualenv</code> creates a clean <code>python instance</code> for my application. How exactly should I deploy this so that usesrs of the software can easily start it?</p>
  
  <p>Should there be a startup script inside the application which creates the <code>virtualenv</code> during start?</p>
  
  <p>The next problem is that the computers don't have internet access. I know that I can specify a custom location for packages (network share?) but is that the right approach? Or should I deploy the zipped packages too?</p>
  
  <p>Would another approach would be to ship the whole python instance? So the user doesn't have to startup the <code>virutalenv</code>? In this python instance all necessary packages would be pre-installed.</p>
  
  <p>Since our apps are fast growing we have a fast release cycle (2 weeks). Deploying via <code>git</code> was very easy. Users could pull from a <code>stable</code> branch via an update script to get the last release - would that be still possible or are there better approaches?</p>
  
  <p>I know that there are a lot questions. Hopefully someone can answer me r give me some advice.</p>