title: Dependant modules to be installed while creating executable in cx_freeze
body: <p>I have created a python script which is dependant on the library speedtest-cli. Now I am packaging it to an executable. However I dont want to create a overhead to all the users using my script having to install speedtest-cli. How do I specify that in setup.py file so that speedtest-cli will automatically be installed while installing my exe.</p>
  
  <p>And I am making it a standalone application. </p>
  
  <pre><code>from cx_Freeze import setup,Executable
  import sys
  
  
  includes = ["speedtest-cli"]
  
  setup(name = "Bandwithtest",
        version = "1.0",
        options = {"build_exe" : {"includes" : includes}},
        executables = [Executable("networktest.py")]
  </code></pre>
  
  <p>Adding the module in includes doesnt work.It raises an import error.
  ImportError :  No module named 'speedtest-cli'</p>
  
  <p>I have 2 questions</p>
  
  <ol>
  <li><p>How do I ensure speedtest-cli installs when users install my application?</p></li>
  <li><p>I have also imported speedtest-cli in my module though I dont use it in my program. Ideally cx_freeze automatically bundles all the imported modules. But it didnt do so for speedtest-cli.Why is that so?</p></li>
  </ol>
  
  <p>Here is the script am trying to freeze.</p>
  
  <pre><code>class Net(threading.Thread):
  
     def __init__(self, interval):
        threading.Thread.__init__(self)
        self.interval = interval
  
     def run(self):
  
        self.main()
  
     def main(self,interval):
  
        try:
          while thread1.is_alive():
             p = subprocess.Popen(r'speedtest-cli',
                                stdout = PIPE, 
                                stderr = PIPE)  #--&gt; This is definitely required
  
     except KeyboardInterrupt as e:
           print "Exiting", e
  
  
  
  class UI:
  
    def __init__(self,* args, **kwargs):        
  
       tk.Tk.__init__(self, *args, **kwargs)
  
       self.wm_title("Network Test")
       self.geometry('250x75')
       self.resizable(width = False, height = False)
  
       self.label = tk.Label(text = "Frequency(seconds)")
       self.label.grid(row = 0, column = 0)
  
       self.entry = tk.Entry(bd = 5)
       self.entry.grid(row = 0, column = 1)
  
       self.button = tk.Button(text = "Start Test", command = self.callthread)
  
       self.button.grid(row = 1, column = 0)
  
       self.button1 = tk.Button(text = "Stop Test")
       self.button1.grid(row = 1, column = 1)
  
       self.mainloop()
  
  def callthread(self):
  
     thread2 = Net(self.entry.get())
     thread2.start()
  
  
  if __name__ == "__main__":
  
     thread1 = threading.Thread(target = MyUI)
     thread1.start()
  </code></pre>
  
  <p>Thanks in Advance.</p>