Skip to main content

Standalone IPython using PyInstaller and VirtualEnv


I decided that I want to create a standalone IPython executable that I can distribute.
This executable should be:

  • Run as a standalone, even if there is no Python installed on the machine
  • Have all required packages even if they aren't installed on the machine
  • Doesn't have extra packages in it (just what needed)
  • Single executable (no shared objects)


In order to achieve this task I used PyInstaller, which according to this StackOverflow post seems like one of the good options to do so.

I also wanted to make my environment as clean as possible, so I installed virtualenv:

virtualenv ipython_env/
source ipython_env/bin/activate

Inside this environment, I ran the following pip command to install PyInstaller and IPython:

pip install pyinstaller
pip install ipython 

Following rgtk's comment: https://stackoverflow.com/a/31412509/132847, I created the following script:

from IPython import embed
embed()

and called it ipython.py


From PyInstaller help manual:
  -F, --onefile         Create a one-file bundled executable.
then, I ran:
pyinstaller -F ipython.py


The output of the script generated a (default named) directory called dist which the output binary was in.

$ file dist/ipython
dist/ipython: Mach-O 64-bit executable x86_64

$ otool -L ./dist/ipython
./dist/ipython:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)

Running this binary:
$ ./dist/ipython
Python 2.7.16 (default, Apr 12 2019, 15:32:40)
Type "copyright", "credits" or "license" for more information.
IPython 5.8.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
In [1]:


That's all for today.

Good luck!
Tal Kain

Comments

Popular posts from this blog

IORegistryExplorer on macOS Dark Mode issue fix

IO Registry Explorer is a utility developed by Apple which allows you to watch the I/O Registry on your macOS. (Original:  https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/art/registryexplorer.jpg ) If you are using the IORegistryExplorer on macOS while working with Dark Mode enabled, then you probably noticed the fact that the explorer doesn't fit the new DarkMode, hence the UI might look like that: Which makes it hard to read the content. I found this article  which shows you how to disable DarkMode for a specific application. Running the following commands: osascript -e 'id of app "IORegistryExplorer"' defaults write com.apple.IORegistryExplorer NSRequiresAquaSystemAppearance -bool yes Solves the issue and make it usable again. Have fun, Tal Kain

Ubuntu: Installing a missing ath3k firmware

While trying to prepare a new Ubuntu box to use a new card based on the Atheros chipset, I encounter the following error: Bluetooth: Firmware file "ath3k-1.fw" not found According to  http://wireless.kernel.org/en/users/Drivers/ath3k : ath3k is the Linux Bluetooth driver for Atheros AR3011/AR3012 Bluetooth chipsets. I saw this blog post: http://hexwave.blogspot.com/2011/04/debian-6-with-atheros-3011-ath3k-usb.html So I decided to try installing the package linux-firmware which contains the relevant file (I used  dlocate  to $ dlocate linux-firmware | grep -i ath3 linux-firmware: /lib/firmware/ath3k-1.fw or you can find it by searching for ath3k: $ dlocate ath3k-1.fw linux-firmware: /lib/firmware/ath3k-1.fw I just ran: # apt-get install linux-firmware and it fixed it by installing the missing firmware file. Good luck! Tal Kain

BinDiff error: "Can't start disassembler. Please set correct path in the main settings first"

After installing  BinDiff  and running the application for the first time on my Windows 7 x64 machine, I tried comparing two different binaries but got an error in the middle of the process: Can't start disassembler. Please set correct path in the main settings first The solution for this error is very simple: While installing BinDiff, the installation process asks for the installation path of IDA. The default path (on x64 machine) would be C:\Program Files (x86)\IDA\. This is not always correct. At my case the installation was at C:\Program Files (x86)\IDA 6.3\. Moving the path inside BinDiff will not be sufficient since part of BinDiff's files are still on the old directory. Easiest way to fix it (or by doing it in advance): Uninstall BinDiff and install it while pointing to the correct IDA's path. -Tal