Skip to content

Commit

Permalink
initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
ptone committed Apr 23, 2014
0 parents commit 6b32998
Show file tree
Hide file tree
Showing 42 changed files with 1,591 additions and 0 deletions.
103 changes: 103 additions & 0 deletions Info.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>12C3006</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>IPyApp</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFile</key>
<string>nw.icns</string>
<key>CFBundleTypeName</key>
<string>node-webkit App</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.intel.nw.app</string>
</array>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>Folder</string>
<key>CFBundleTypeOSTypes</key>
<array>
<string>fold</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>None</string>
</dict>
</array>
<key>CFBundleExecutable</key>
<string>node-webkit</string>
<key>CFBundleIconFile</key>
<string>app.nw/app.icns</string>
<key>CFBundleIdentifier</key>
<string>org.ipython.ipyapp</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>IPyApp</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>32.0.1700.107</string>
<key>CFBundleVersion</key>
<string>1700.107</string>
<key>DTSDKBuild</key>
<string>11E52</string>
<key>DTSDKName</key>
<string>macosx10.7</string>
<key>DTXcode</key>
<string>0452</string>
<key>DTXcodeBuild</key>
<string>4G2008a</string>
<key>LSFileQuarantineEnabled</key>
<true/>
<key>LSMinimumSystemVersion</key>
<string>10.6.0</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>SCMRevision</key>
<string>239963</string>
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>com.pkware.zip-archive</string>
</array>
<key>UTTypeDescription</key>
<string>node-webkit App</string>
<key>UTTypeIconFile</key>
<string>nw.icns</string>
<key>UTTypeIdentifier</key>
<string>com.intel.nw.app</string>
<key>UTTypeReferenceURL</key>
<string>https://github.com/rogerwang/node-webkit/wiki/How-to-package-and-distribute-your-apps</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>com.apple.ostype</key>
<string>node-webkit</string>
<key>public.filename-extension</key>
<array>
<string>nw</string>
</array>
<key>public.mime-type</key>
<string>application/x-node-webkit-app</string>
</dict>
</dict>
</array>
</dict>
</plist>
13 changes: 13 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Copyright 2014 Preston Holmes

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
77 changes: 77 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# IPyApp


This package currently serves as a proof of concept for bundling IPython notebook into a standalone executable application.

There are basically two components to bundling this. The first is to take Python and IPython and any other python libraries, and bundle them into a platform executable.

Then wrap this executable in a [node-webkit](https://github.com/rogerwang/node-webkit) app to provide the web UI to the notebook server.

Current this POC is limited to Mac OS using [Py2App](https://pypi.python.org/pypi/py2app/).

However node-webkit is cross platform, so as long as an executable can be created (ie py2exe), then this general approach should be cross platform.

## How to create the bundle

First, create a virtualenv and install IPython, py2app and any packages you want included.

Then cd into the py2app directory and build the executable

rm -r build dist; python setup.py py2app --packages IPython

Include any additional --packages

This will create a nb.app executable in the dist folder. Copy this into the app.nw folder.

Next download the [node-webkit binary](https://github.com/rogerwang/node-webkit#downloads)

Right click on the node-webkit.app binary that you downloaded and choose "Show Package Contents"

Copy the provided Info.plist file into the Contents folder of the package, and copy the app.nw folder into the Contents/Resources folder of the package.

You should now be able to launch the app by double clicking.

The layout of the app should look something like:



IPyApp.app
└── Contents
├── Frameworks
│   ├── crash_inspector
│   ├── node-webkit\ Framework.framework
│   │   ├── Libraries
│   │   ├── Resources
│   │   ├── node-webkit\ Framework
│   │   ├── node-webkit\ Framework.TOC
│   │   └── node-webkit\ Framework.tmp
│   ├── node-webkit\ Helper\ EH.app
│   │   └── Contents
│   ├── node-webkit\ Helper\ NP.app
│   │   └── Contents
│   └── node-webkit\ Helper.app
│   └── Contents
├── Info.plist
├── MacOS
│   └── node-webkit
├── PkgInfo
└── Resources
├── app.nw
│   ├── app.icns
│   ├── IPythonConsole.png
│   ├── nb.app
│   ├── node_modules
│   ├── package.json
│   ├── start.html
│   └── test.js
└── nw.icns



### Similar projects:

* https://github.com/liyanage/ipython-notebook - A similar project that uses node-webkit, but does not bundle the python environment, but provides an alternative to opening in the browser.
* https://github.com/mangecoeur/ipython-desktop - A project to embed IPython notebook into a native Mac App using OS X only web ui views



Binary file added app.nw/IPythonConsole.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app.nw/app.icns
Binary file not shown.
1 change: 1 addition & 0 deletions app.nw/node_modules/sleep/.jshintignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 33 additions & 0 deletions app.nw/node_modules/sleep/.jshintrc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions app.nw/node_modules/sleep/.npmignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions app.nw/node_modules/sleep/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions app.nw/node_modules/sleep/binding.gyp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

88 changes: 88 additions & 0 deletions app.nw/node_modules/sleep/build-util/tools.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6b32998

Please sign in to comment.