When each new version of Canopy is released, the new Canopy installers are
updated to bundle the most recent versions of the packages in the
Enthought package repository.
However to avoid disrupting your working package set,
these bundled packages will not be updated in your existing User Python
environment, even if you uninstall and reinstall Canopy. Rather, packages can
be updated as usual in the Package Manager or with the enpkg command-line
utility. If, instead, you wish to install the new bundled package set, you must
explicitly reset (delete) your User Python environment. For more information
see “Uninstalling and resetting Canopy”
in the Enthought Support Knowledge Base.

The Canopy feedback and bug reporter now encourages the user to enter a valid
email address, so that Technical Support can respond or ask for more
information. Also, the report now includes user license information, to help
troubleshoot user access problems.

In rare cases, users operating behind a proxy firewall are unable to log in on
Canopy’s Welcome Screen despite Canopy’s Detailed Network Access Tests (in the
preferences dialog) all passing. This can occur when your proxy server is
configured to strip authentication information from the HTTP request. An
additional test has been added to Canopy’s Detailed Network Access Tests to
help diagnose this situation.

When a file was opened from the Canopy Welcome Screen’s Recent Files list,
before any full Canopy Editor window exists yet, that file was opened in a
plain text editor, with no file browser, Python pane, or debugger, and no way
to Run the file. An exception was sometimes raised. This has been fixed.

It was possible for another Python install to interfere with the default
sys.path seen in Canopy’s Python, due to adding some paths from registry
values. This might allow the wrong versions of some packages to be imported.
Canopy has been changed to not use those registry values when constructing
sys.path.

When Canopy is set to be the default Python on Windows it sets a corresponding
registry key used by stock Python as a fallback sys.path value. Canopy was
setting an incorrect value there. This would not have affected many users. It
has been fixed.

When Canopy was deployed on OSX on a multi-user system, where the users do not
have admin access rights, non-admin users were unable to read the eggs in
Canopy’s LOCAL-REPO and EXTRA-REPO folders due to incorrect file access
permissions. This has been fixed.

On some distributions of Linux the system version of the glib library may be
newer enough than the version provided with Canopy that there can be some
version mismatches with some related libraries. In a Canopy environment this
typically manifests as a shared library error when importing wxPython. This
is planned to be solved properly in a future release, in the meantime a
workaround is in the this knowledge base article.

In Canopy 1.7.0 and 1.7.1, users who never have an internet connection to
Canopy, and are not running under a Canopy Common Install, are unable to
use the Debugger and Data Import Tool even after manually installing a Canopy
license. This has been fixed.

Canopy now prints a message when started from the command line, informing the
user that the -d (--debug) option can be specified to see console output.
This helps to easily see error messages if Canopy does not start as expected.

Canopy’s new graphical Data Import Tool allows you to import text data files
into Pandas DataFrames and manipulate them in an easy, reproducible way. It
provides an exploratory graphical interface to data manipulation while using a
familiar Python representation of your data.

After you have installed Canopy 1.7.0, Canopy will notify you when a future
Canopy application update becomes available. It will provide a link which you
can use to download and install the update. This fixes a longstanding issue with
automatic downloads of updates, resulting in bandwidth overuse in some cases.

Note: Updating to Canopy 1.7.0 from earlier versions must still use the
previous method. Therefore in-application updates to Canopy 1.7.0 will only be
available for a limited period. For more information, see
this knowledge base article.

Canopy will now send you to the Enthought web site to create (register) a new
user account. This streamlines the account creation workflow and makes it easier
for you to verify that your login is working, before using it in Canopy.

When Canopy’s Editor opens, all files are now displayed in the File Browser,
regardless of file type or Canopy’s ability to open the files. This provides a
clearer view of the complete contents of folders. You can temporarily change the
filter (at the top of the File Browser) to display only specific file types.

By default, when Canopy starts it checks that Jupyter is installed in your User
Python environment (necessary for Canopy to be able to open or create a Jupyter
notebook), and prompts you if Jupyter is not found. You can immediately prevent
this prompt from re-appearing by checking “Don’t show this dialog again” or
disable/re-enable it in the Notebook tab of Canopy’s Preferences dialog.

Python’s ENABLE_USER_SITE is now disabled by default. Previously, this was
enabled, following python.org norms, but in our experience was almost never used
intentionally. Instead, it caused unintentional corruption by other Python
installations. In particular, unrelated and incompatible packages in
%APPDATA%\Python\Python27\ (Windows) and ~/Library/Python/2.7 (Mac)
could interfere with Canopy’s execution. If you have a special requirement to
enable this setting, you can edit your site.py file manually.

Unreleased development versions of some packages were being inappropriately
installed into the Canopy User Python virtual environment. The released versions
of these packages are now installed when a User environment is created. (As
always, updating the Canopy application will make no change to your existing
User environment by default. See “Package updates”, above.)

For a few users, Canopy in-application updates are still being downloaded
repeatedly, imposing excessive bandwidth costs on those users and on us.
Therefore we have again disabled in-application updates for all users, except
for a limited time immediately after release. If Canopy does not show an
available update, please download and reinstall, as described in
this knowledge base article.
Our apologies for the inconvenience. We plan to change the update model in
Canopy 1.6.3, which should then allow in-application updates from 1.6.3 to
subsequent versions.

On Linux and Mac installations, a new alias activate_canopy will now
be added to the user’s default shell profile when the User virtual environment
is initially created, or when the “Set Canopy as default Python” option is
toggled on or off in the Preferences dialog. Invoking this alias on a command
line will activate the Canopy User Python virtual environment by placing it at
the beginning of your PATH for the duration of that terminal session, so that
when you type python, pip, enpkg, or other Python-related shell
commands, they will found and executed from Canopy User Python.

This capability is already available when opening a “Canopy Terminal” from the
Canopy Tools menu. With this new alias, there is no need to use the Canopy
GUI to have access to the capability.

On Windows a similar capability is already available by by opening a Canopy
Command Prompt window from the Windows Start menu or the Canopy Tools menu.

Version 2 of the Package Manager is nearing full release (planned for Canopy
1.6.3). In addition to the features mentioned in the previous release notes, it
now:

Displays a history of all package installations done by Package Manager /
enpkg. In this beta, use appearance / settings to include the history from
all sessions. A new down-arrow icon allows you to copy to clipboard, the
history from all sessions.

Since only the administrator should be updating Canopy when it is deployed as a
common install, the option to perform automated update checks is turned off
by default in new common installs. This can be changed with a new
common install setup option,
or subsequently by manually editing the central preferences.ini file.

In addition to the normal updating of bundled packages as described above, the
standard (small) installers now bundle soft dependencies of pandas (lxml,
html5lib, BeautifulSoup4). This is mostly a convenience, as these packages are
already available to all connected users in the Canopy Package Manager.

A number of issues were identified in Matplotlib 1.5.0. Several of these
affect the use of the Qt and Wx GUI backends. Our fixes for these are in
Enthought’s patched Matplotlib 1.5.0-4, and along with many other fixes, are
also in Matplotlib 1.5.1, just released and also bundled with this Canopy
installer. (Note that bundled packages do not affect existing Canopy User
environments; see “Package updates” above).

In rare cases, trying to submit an error report using Canopy’s built-in bug
reporter would result in another bug report window, which would result in
another,... and so forth until Canopy was killed. This has been fixed for the
identified conditions. Please let us know (by email to support@enthought.com,
if necessary) if the bug reporter fails for you, in this or any other way.

In Canopy 1.6.1, this was fixed for the standard Managed Common Install, but
not for the Open Common Install, which has now also been fixed. Note that for
most users, the Open Common Install is not recommended. This is discussed in the
Knowledge Base article “Canopy Common Install Options”.

The Python included with Canopy has been updated from version 2.7.9 to
version 2.7.10. This Python version resolves Canopy startup problems for some
Windows users. It also includes a number of SSL-related improvements, and other
fixes. See the change log at
https://hg.python.org/cpython/raw-file/15c95b7d81dc/Misc/NEWS

For better compatibility with the fast-moving Jupyter project, the Canopy editor
now opens all Jupyter (IPython) notebooks in your default web browser. To
support this capability, users who retain pre-existing Canopy User Python
environments must update IPython in the Package Manager
or using the enpkg command-line utility. For details, see
“Using Jupyter (IPython) Notebooks in Canopy”
in the Enthought Support Knowledge Base.

Canopy’s proxy settings are usually configured either by setting environment
variables, or in Canopy’s preferences dialog (which, if enabled, overrides any
environment variables). When the proxy is configured in the preferences dialog,
the user may also specify whether these settings should be passed to
subprocesses, notably the IPython/Jupyter kernel and Canopy Command Prompt /
Terminal.

In previous versions of Canopy, proxy preferences settings have been
inconsistently applied. This has been fixed.

For users behind a simple (non-authenticated) proxy firewall, whose server and
port addresses were specified in the standard Windows or Mac OSX settings, it is
no longer necessary for Canopy users to set either environment variables or
Canopy preferences in order to log in, update packages, or update Canopy.
The documentation browser still requires specific proxy configuration.
A forthcoming version of Canopy will also obtain proxy user ID and password from
the OS, and will also support the documentation
browser’s use of these sytem settings.

After you change Canopy’s connection or login status (e.g. logging in or
changing the proxy specifications), the original Package Manager does not always
correctly detect this status change. The workaround is to restart Canopy.
This will not be fixed in the original Package Manager. Package Manager version
2 (now in beta, see previous item) fixes this.

The Managed Common install, new in Canopy 1.6.0, has been improved to further
smooth the setup process for the installing administrator. For details, see
“Canopy Common Install options”
in the Enthought Support Knowledge Base.

To avoid conflicting assumptions about whether Wx, Qt/PySide or Qt/PyQt is used
as the GUI backend for your Python programs, and for better compatibility with
the default assumptions inside the Canopy GUI – the default GUI backend is now
Qt, and the default Qt bindings package is now PySide.

Therefore, if your code implicitly assumes that Wx or PyQt are the backend,
you will need to change your code or else specify them before your code runs,
e.g. by setting ETS_TOOLKIT and/or QT_API environment variables, or by
using IPython/Jupyter’s --gui, --matplotlib, or --pylab startup options,
or the equivalent magic commands or Jupyter or matplotlib configuration file
settings.

Heads up: We expect that Qt will remain the default backend for a long time.
However we plan to transition to Qt5 in the coming year; given the current state
of PySide, this would require a change from PySide to PyQt.

For additional discussion or late-breaking news about GUI backend specification,
please see the article
“Python GUI backend choices”
in the Enthought Support Knowledge Base.

Our build of MKL has long included several added utility functions
(get_version_string, thread_free_buffers, get_cpu_clocks,
get_cpu_frequency, set_num_threads, and get_max_threads)
If you use any of these functions, the new package mkl_service must have been
installed. Since this is now included in all Canopy installers, no action is
needed on new or clean Canopy installations. If you are working in an existing
Canopy installation and update the MKL package, then you must also install the
mkl_service package. No change in your code is needed. This refactoring
is in preparation for updating the version of MKL provided in Canopy Python.

A new “managed common install” configuration is available. For institutional multi-user
setup where a standard configuration is desired for all users, managed common install
is preferable to Canopy’s existing “common install” (now called “open common install”)
configuration.

With a managed common install, individual users do not have their own System
and User environments or directories; instead, all users share the same
System and User environments, which are maintained by an administrator.

Creating a managed common install is now an option of the Canopy command line tool. See the next
item.

The Canopy command line tool (Canopy_cli) now has a post-install-setup
command, including options for specifying the target path for common installs,
and the source path for shared Canopy license files.

These same options can also be specified when installing Canopy on Windows
using msiexec.

A regression in Canopy 1.5.3 caused the System and User environment directories
to be deleted when Canopy was uninstalled. Since uninstallation and
reinstallation is sometimes necessary to update Canopy, this could disrupt a
user’s working environment when their only intention was to update the Canopy
application.

Under some circumstances, especially when Canopy had been installed for all
users on Windows systems with User Access Control enabled, uninstalling Canopy
failed, making it impossible to install a new version of Canopy. This has been
fixed for the scenarios of which we are aware.

If Windows fails to uninstall Canopy (for example, uninstalling a version of
Canopy older than 1.5.5 under the above conditions), you can use Microsoft’s
MsiZap utility. See the note at the end of the Windows section of
“Uninstalling and resetting Canopy”
in the Enthought Support Knowledge Base.

An persistent problem in Canopy’s in-application update feature caused extreme
bandwidth burden, requiring us again to disable these updates. This has been
improved (fixed, we hope!) in Canopy 1.5.5, which means that updates to
subsequent versions of Canopy should again be possible from Canopy 1.5.5 (not
from earlier versions). For more information, see
“Canopy shows no updates available”
in the Enthought Support Knowledge Base.

The Canopy GUI application’s editor now includes IPython 2.4.1 in the Python
panel (a QtConsole) and Notebook. IPython 3.1 (and above, when released) can
be used in a Canopy Command Prompt or Canopy Terminal, which can be opened
from the Canopy Tools menu, or when using the User Python environment outside
of the Canopy application.

At times the Package Manager would not recognize that the user has a valid
subscription, even after repeating login, until after Canopy was restarted.
This has been fixed – if your subscription status changes, and you close and
reopen the Package Manager, it will recognize your new subscription status.

In Canopy 1.5.0 and 1.5.2, but not mentioned in the release notes of those
versions, there were many improvements in Canopy’s support for operating behind
a proxy firewall. There are additional improvements in Canopy 1.5.3. For
overview and how-to, see “Can I use Canopy Behind a Proxy Firewall?”
in the Enthought Support Knowledge Base.

All network communication code within Canopy, including the Package
Manager, account authentication and license management, has been rewritten to
provide more consistent communications across the entire application. The
result is better proxy and SSL support now, and a clear path to more
improvements in the future. Also a new item has been added to the networking
preferences dialog to enable or disable SSL certificate verification, which may
still have problems with some incorrectly configured proxy servers.

The newest version of the setuptools package (16.0) is now installed in Canopy
Core, instead of the distribute package. (The distribute package was a fork of
the setuptools package, and has since been merged back into setuptools.)
Properly written setup scripts should be able to use the new setuptools
without major problems. Newly created User Python environments will also
include setuptools.

Users with existing User Python environments are encouraged to install
setuptools in those environments, using the Package Manager or the enpkg
command-line utility. Also, the new setuptools will automatically be installed
in your User Python environment if you install or update any package which
specifies a runtime dependency on setuptools, most notably pandas.

The backend toolkit for the Enthought Tool Suite now defaults to ‘qt4’
instead of ‘wx’ for Python scripts run from Canopy Command Prompt or Terminal
sessions started from the Canopy Tools menu. This is done by setting the
ETS_TOOLKIT environment variable (see below) in those sessions, unless this
variable was already set in the Canopy’s application’s environment.

Because the default toolkit for ETS itself is still ‘wx’, this change does not
affect code run in other Command Prompt / Terminal sessions (including the
Canopy Command Prompt in the Windows Start Menu). To set the backend toolkit in
these sessions, set the environment variable ETS_TOOLKIT to ‘qt4’, or
include code such as the following early in your program, before any UI
initialization has been performed:

fromtraits.etsconfig.apiimportETSConfigETSConfig.toolkit='qt4'

Users who depended on the ‘wx’ toolkit being selected by default in Canopy
Command Prompt / Terminal sessions can effectively restore the previous
behavior by using either of the above methods (but specifying ‘wx’, rather than
‘qt4’).

Code run directly in the Canopy GUI already defaults to ‘qt4’ unless Canopy
Python’s pylab backend preference is set to wx. This behavior has not changed.

Some users of OS X Mavericks and Yosemite experienced Canopy crashes when the
computer went to sleep or changed its network connection while Canopy was
running. Canopy now uses a new upstream version of the Qt GUI toolkit library,
which fixes this issue.

Some institutional users running behind a proxy firewall were able to configure
Canopy for the proxy, and to pass the proxy tests, but were still not able to
use the Package Manager or the Canopy GUI debugger. This was due to incorrectly
failing SSL certificate verifications through the proxy. This release includes a
workaround. A more permanent fix is planned for Canopy 1.5.3.

When the user does not have write permissions to the application installation
folder, an application update would be downloaded, but could not be installed.
This cycle would repeat indefinitely, potentially wasting much bandwidth.
Now Canopy will only download its update files if the user has the necessary
write permissions.

When a user starting Canopy for the first time under a multi-user Common Install
configuration coes not have write access to their Windows Start menu, Canopy was
not able to create a Canopy Command Prompt shortcut in the Start menu, so
could not complete the setup. This is now handled gracefully. Note that users of
more typical (non-common-install) configurations must still have write access
to their start menus during first startup so that the IPython PyLab shortcut
(and potentially others) can be created.

To help resolve network connection problems (especially behind proxy
firewalls), a network access test tool has been added to the Canopy Preferences
dialog’s Network tab. If Canopy is experiencing problems connecting to
Enthought’s servers (e.g. for the Package Manager or debugger authentication),
then the results of this test may help Enthought support diagnose the problem
and suggest solutions.

For subscribers without an internet connection, and institutional subscribers
doing automated installation for users who are blocked from installing packages
themselves, Canopy 1.5.2 provides an installer containing approximately 300
packages. Because its disk footprint is so large (approximately 3 GB) and
most users will only use a few of these packages, we strongly recommend that
most subscribers install Canopy from the standard installer, which includes
approximately 55 packages, then add other packages as needed.

The email login ID was inappropriately case-sensitive during debugger
license authentication. This resulted in the debugger not being
enabled for the user if they logged in with a user ID with upper/lower case
differences. This has been fixed.

Upgrading from Canopy < 1.4.0 could cause a failure in one of the migration
scripts due to the use of older APIs. This specific migration script is not
needed any longer due to other changes so it has been disabled.

Canopy now includes a Python GUI debugger, available to subscribers. It is
tightly integrated with IPython’s debugger, and adds GUI tools for stepping
through code and setting breakpoints. It also provides a variable browser that
makes it quick and easy to inspect variables in the current Python namespace,
including complex objects such as NumPy arrays. Full documentation is available
within Canopy in the Help menu’s Documentation Browser, and online at
Canopy Debugger Guide.

When running a program from the Canopy Editor you can now specify the working
directory and the command-line parameters that should be used when running
the program. These are specified in the Run Configurations dialog,
accessible from the Run Menu or the Run toolbar dropdown menu. The same run
configurations can also be used when running the program in the new debugger.

A new item has been added to the Canopy Preferences dialog (Python tab) that
allows the user to set the number of lines that will be buffered for scrolling
back, in the IPython pane in the editor window.

The IPython console and IPython notebooks in the Canopy GUI editor
now use IPython 2.3. IPython 2 was a major release with many changes to notebooks
including support for interactive widgets, directory navigation, modal user
interface, improved security, and many other enhancements and bug fixes.
See What’s new in IPython 2.
Note that the latest version of IPython is usually available in a Canopy Command
Prompt or Canopy Terminal window (see
https://support.enthought.com/entries/22305234).

The Canopy Package Manager internals have been updated to use the newer
enstaller APIs. The Package Manager is now more robust. Multiple-package installs
(e.g. “install all...”) can be canceled cleanly.

When running Canopy on the Centos Linux distribution, the default editor font
is proportionally spaced instead of being fixed-spaced. This causes text
columns to not line up correctly. A fixed-spaced font can be selected by
going to Edit -> Preferences and selecting a different font.

This issue is not present on other Linux distributions that we test on.

To improve security: when providing proxy settings in the Preferences dialog,
you may now specify that Canopy should not pass these proxy settings via
environment variables to the IPython kernel process, nor to a Canopy Command
Prompt or Terminal.

By default Canopy automatically downloads, but does not install, application
updates. This behavior can be disabled by going to the Canopy Preferences
Dialog (Edit -> Preferences or, on Mac OS, Canopy -> Preferences), and
unchecking the toggle button. A bug in previous versions caused the updates
to be downloaded but not reported. This has been corrected and Canopy no
longer checks for the availability of updates, or downloads them, when the
preference is unselected.

On Linux and Mac OS systems, it is common to start applications from a
terminal and then place them into the background with the shell command ‘bg’.
This disconnects the application from the terminal input. In general this has
no impact on Canopy, but a problem with the Preference Dialog would cause
Canopy to hang if the dialog is opened after Canopy is placed in the
background. This problem has been corrected.

Canopy offers a number of options for installing and setting up Canopy via
command-line commands. One of the options, –no-gui-setup,
allows the user setup process to be run without GUI interaction. In previous
releases, several error dialogs could be displayed, either incorrectly
appearing to users to resulting in incorrect error messages in the terminal
(“Unable to connect to X server” on Linux systems). This has been corrected.

When logging in through the Canopy Welcome Screen, if wrong credentials
(username or password) were used the error message indicated that it could be
a network connectivity issue. The error message has been corrected to better
indicate the source of the problem.

PTVS is Microsoft’s Python Tools for Visual Studio application. Canopy includes integration
that allows it to work seamlessly with PTVS. In the previous release, the
integration would cause the auto-completion (Intellisense) features in PTVS
to incorrectly show packages in virtual environments which were not
accessible. This has been corrected.

Canopy 1.3 added support for using Microsoft’s Python Tools for Visual Studio (PTVS)
package with Canopy. Canopy’s User Python environment automatically apears in the PTVS
Python Environments list. However, there was no way to get additional virtual environments
created from the command line to appear in the list.

With this release, you can now register a virtual environment and it will automatically
appear in the Python Environments list. For more details see the Canopy Users Guide description of
the command line interface, canopy_cli register / unregister.

Canopy uses migration scripts during the update process to update internal files and settings
from release-to-release. Failure handling around the running of these scripts has been
improved to reduce some causes of upgrade failures.

This error occurs when Canopy is already running and the user tries to run Canopy from the command
line or open a file with Canopy from the Windows desktop (such as double-click a .py file). Typically
the error is reported against the file “bootstrap.log”. The startup process has been changed to be
more tolerant of locked log files and to use an alternate file name.

Any stdout and stderr output from C extension modules or the libraries they
use will now be shown in the IPython panel in Canopy, similar to how the
Python sys.stdout and sys.stderr streams are already being handled. This means that
if an extension module calls the C printf function, or similar APIs, then
that text will be seen by the user when the code is running in Canopy.

This resolves an issue where C extensions which generate substantial output to
stdout or stderr could cause the Canopy IPython prompt to hang.

The bug reporter dialog will now give the user the option of restarting
Canopy in recovery mode, in order to perform a factory reset of the System
virtual environment. The “factor reset” mode does not impact the User Python
environment and helps Canopy recover from some failure-to-start errors.

The CANOPY_CONFIG environment variable can now be used to specify the
location of the Canopy preference files, log files, etc. This environment
variable specifies the path to the directory containing the preference.ini
file and other configuration files for Canopy.

Users can now open a new Canopy Command Prompt (Windows) or Canopy Terminal
(Mac OS or Linux) from the Canopy application’s Tools menu. This can be used to
perform command-line installation in the Canopy User Python environment, or to
run ipython or other command-line tools or scripts in that User environment.
Details at Canopy Command Prompt or Terminal.

Some changes have been made to the Package Manager and the enpkg command-line tool to help
clarify which packages are part of the supported Enthought distribution, and which come
from the unsupported pool of community / PyPI packages that Enthoughts offers on an as-is
basis.

The package install, update and remove history in Package Manager can now be
copied to the clipboard by right-clicking on the history items. This will be
helpful information for some types of support requests.

On Windows and OS X, Canopy can now be used to open IPython Notebook files
(*.ipynb files) by double-clicking them on the Desktop or in the system file
browser, or by using the “Open with...” option from a context menu.

The ‘Network’ tab of the preferences dialog now shows the values of environment variables
related to network proxies. This feature can be helpful in figuring how whether Canopy is
connecting to a proxy service, and what values it is using.

Canopy also now recognizes and either corrects or reports mal-formed values specified by
these environment variables. Some corporate environments use non-standard forms that
previous were not recognized by Canopy.

A new menu item on the Help menu labeled “Support Knowledge Base” will take you to
Enthought’s support site. This site is continuously updated with answers to common
questions, late-breaking problems and solution, and other important information.

When a new virtual environment is created with the Command line interface, Enthought’s
enstaller package (containing the ‘enpkg’ command and other utilities) is now
installed into the new environment by default. This provides an easy means to
start installing additional packages.

In the Windows version it was previous possible for Canopy to start up with the default
location of a window off the visible screen where it couldn’t be found or moved. This
could happen when switching from a multiple-monitor setup to a single-monitor setup.

As of Canopy 1.4, when Canopy starts, it now ensures that the sizes and positions
of windows that are restored from the last session are still valid. This caused
problems when the number or size of monitors attached to the user’s computer
had changed since the last session.

When the ‘Keep Directory Synced to Editor’ feature was enabled, and the current
file was on a Windows network share, an incorrect %cd (change directory)
command was generated, causing the sync to fail. This has been fixed.

Clipboard shortcut keys like Cmd+V now work as expected in IPython Notebooks
when they are used within the Canopy application. In addition shortcuts for
zoom-in and zoom-out (Cmd+/-) have been implemented.

On Windows with Canopy 1.3 there was a problem when installing eggs with the
package manager or with the enpkg command-line tool which resulted in incomplete
installation of the egg’s meta-data. This problem has been fixed, and when
Canopy 1.4 is run for the first time any incorrect egg installations in the User
Python environment will be repaired automatically. If the user has other venvs they
have created themselves then those can also be repaired using the enpkg-repair
command-line tool.

This affected Canopy 1.3.0 - mostly on Linux, and to a lesser extent on OSX.
Python 2.7.6 made a small change in how the compile and link flags
are generated when building extension modules. As a result, when using
Canopy to build an extension module, the build folders (non-existent on user
machines) were used, instead of the correct installation folders. Canopy has
now adapted to this change in Python, so the compile and link flags,
generated from python-config and when using distutils and setuptools,
will now refer to the correct installation folders.

Various other fixes have been implemented that improve the stability of Canopy
and its tools, solving several less frequent but still annoying bugs. In
addition some changes have been made to help Canopy recover better when problems
do happen, and also to better report problems back to Enthought.

A problem was found in the update mechanism when dealing with DLLs loaded in memory with a
base address above the 32-bit address space. This causes the Canopy platform updates to
fail. The Canopy 1.3.1 update corrects the problem and is required to update 64-bit
Windows versions to version 1.4. Other versions of Canopy do not require this patch.

Canopy’s python distribution has been updated from 2.7.3 to 2.7.6. This is a minor patch release
to Python meaning that all existing 2.7.3 code is expected to run the same as before. Please
see this Enthought Knowledge Base article
for details.

Support for Microsoft’s Python Tools for Visual Studio (PTVS)
was introduced in Canopy 1.2. An issue with finding a debug symbol library makes the mixed-mode
debug option harder to use. This has been corrected in 1.3, details can be found in this
knowledge base article.

In some cases, the Package Manager UI would show an available update to one of the
Canopy packages, but no option was provided to install the package. This issue is resolved
and details are available in this knowledge base article.

A change in the latest Mac OSX version “Mavericks” caused Qt to select the wrong system font,
and thus the display font in Canopy wasn’t right. We have applied a patch to Qt to correct
the issue and the fonts should display correctly now.

In some situations Canopy on OSX could run into a deadlock when trying to
exit the application. This would cause Canopy to still be shown as a running application
even though it had been terminated. When performing an update, it would also cause a dialog
to appear asking you to kill the existing Canopy processes. A workaround has been added to
avoid the deadlock so Canopy can exit cleanly in a timely manner.

The PySide package has been updated to verison 1.2.1 with some additional community fixes
added to Enthought’s builds. These changes improve the stability of the Canopy GUI. Users
writing Python code that uses PySide and Qt should note the change as well as this change
updates the user-visibile versions as well. No compatibility breaks are expected.

In Canopy 1.3 (and 1.2), there are several issues with virtual environments
created with the Canopy CLI or directly with venv. These issues should be
fixed in the Canopy 1.4 release. Please see this Knowledge Base article for more information.

Python Tools for Visual Studio is a free, open-source plugin
which adds Python suport to the Microsoft Visual Studio development environment. Visual Studio
with PTVS is a professional software development environment ideal for users and teams who need to
develop and debug significant applications, especially those with mixed Python/C++/C environments.
This compares with the Canopy analysis desktop which is tuned for scientists and analysts working
with Python scripts and smaller applications, especially for interactive work with the IPython
console and other analysis tools.

The PTVS completion database will need to be refreshed from the Python Environments window before
the first use to enable full code completion. Similarly, after new Python packages are installed
via Canopy’s Package Manager it is necessary to refresh the completion database before the
new packages will be available for completion.

The latest release of Apple’s Mac OS operating system code named “Mavericks” causes some
compatiblity with the interactive IPython prompt and with IPython Notebooks. The issue causes both
to run extremely slowly. If possible we recommend not updating your OS until the issuss are
understood and resolved.

The ‘pip’ command provide access to Python packages available on the PyPI
repository and through other sources. This command has always been available to be installed via
the ‘enpkg’ or ‘easy_install’ commands. With Canopy 1.2 ‘pip’ is now installed by default.
The command can be found in the User\Scripts directory on Windows, or User/bin on Linux and Mac OS.

Note: users with existing Canopy installations will still need to install it manually if desired.
The command to install ‘pip’ is:

easy_install pip

The easy_install command can be found in the User\Scripts directory on Windows or User/bin on Linux
and Mac OS.

The PySide and Qt installations within Canopy have been upgraded to include the respective
developer tools such as ‘qmake’ and the UIC compiler. These tools can be found in the core
Canopy installation tree. The “Core” installation is the location where Canopy is initially
installed. See Where are all of the Python packages in my User Python Environment? As a reminder, you never run Python directly
from Core (except to start Canopy itself), but rather from a User environment which inherits from Core.

This error typically occurs when the 64-bit Canopy install is run on a 32-bit Windows system.
Users on 32-bit machines should make sure they select the 32-bit installer when downloading
Canopy from https://www.enthought.com/downloads.

This error occurred primarily on Windows systems and was the result of the preferences.ini file
becoming corrupted. On earlier versions of Canopy the workaround is to exit Canopy and delete
the preferences.ini file located in each user’s account.

Canopy 1.2 detects malformed preferences files, renames the file with a ‘.bak’ extension, and
then loads with the default preferences.

The environment variables HTTP_PROXY and HTTPS_PROXY are used on most operating systems to
specify the host, port, and (optionally) a username and password of a proxy firewall to
use when connecting to the internet. Many organizations use such servers. Canopy will honor
these settings when making outgoing connections unless they are overridden from the Canopy
preferences dialog.

Both environment variables are expected to be set to a value URL. For example:

http://user:passwd@proxy.enthought.com:8080

In previous releases if either environment variable was set to an invalid URL Canopy would
fail to start. This release partially corrects this behavior to ignore the invalid value,
but the error is only reported in the log file ‘main.log’ (i.e., the user is not notified
directly).

When using the canopy_cli venv command to create a new virtual environment, if the target directory is
specified with a relative path, any scripts in the ‘/bin’ directory of the new virtual environment
would have the wrong path to the Python interpreter (the “#!” line at the start of the file).

This issue was corrected for some virtual environments in the previous release and has been completely
corrected now.

The Canopy_cli.exe command supports setting up and configuring Canopy environments from the
command line, enabling deployment automation. The –no-gui-setup switch turns off GUI
interactions for command-line usage. In the previous version the command still showed a
progress dialog, causing the command to fail on headless servers.

After tremendous work, the IPython team and community achieved their 1.0 release,
quickly followed by version 1.1, with even more features. The Canopy GUI’s
integrated IPython prompt in the editor window now uses IPython 1.1.

Please note that when ipython is run from an OS command prompt (terminal or
shell), it will be whatever IPython version is installed in the Canopy User
Python environment. This version may or may not match the IPython version
used in the Canopy GUI itself, and can be independently changed. To install
IPython 1.1 or any other version for use from the OS command line, go to the
Canopy Package Manager and update the IPython package.

We are investigating an issue in the integration between the code editor and the Qt text editor
widget that can cause Canopy to crash when using the code completion feature (‘tab’ to complete
symbol names). The failure happens rarely, particularly when ‘tab’ is pressed
several times in quick succession, and appears to be timing-dependent. We can reproduce
the crash and are investigating, with a target of fixing it for the 1.2 release in
early November.

When using the canopy_cli venv command to create a new virtual environment, if the target directory is
specified with a relative path, any scripts in the ‘/bin’ directory of the new virtual environment
will have the wrong path to the Python interpreter (the “#!” line at the start of the file). This path
must be manually corrected in order for the script to work correctly.

This issue has been corrected for any virtual environments created, from now on,
which are based on the Canopy User environment.

However, when such virtual environments are created from the core installation
directory specifying a relative target path, the resulting scripts will still be
incorrect in Canopy 1.1.1.

Workaround: to avoid having to manually edit the “#!” lines in these scripts,
always specify an absolute path when creating such virtual environments.

This defect will be corrected in the 1.2 release planned for early November.
Note that any scripts already created incorrectly will not be fixed, and must
be manually corrected, or the virtual environment re-created.

On Windows, this option pops up a dialog, thus breaking installation automation.
This will be fixed in Canopy 1.2. If you need a simple fix for this sooner,
please contact canopy.support@enthought.com.

At startup Canopy would begin to show the splash screen and then abort with no error message. The
log file would only show the following message:

QtWarningMsg: fatal IO: client killed

The problem has been tracked down to an issue with some older X Window System servers which appear
to be unable to handle high-resolution application icons. We have changed the icon and Canopy now
works correctly on all tested X servers (including XMing on Windows) and VNC servers.
Please report any continuing issues to canopy.support@enthought.com.

After a crash or forced quit of Canopy, users were sometimes unable to restart
Canopy without manually deleting several lock files in the user’s preferences
directory. Canopy should now delete these files when appropriate.

During the update process, Canopy will sometimes report that stray Python processes are still
running and need to be closed before Canopy continues. This is primarily an issue on Windows where
running processes often hold locks on files, thus preventing some files being updated.
Canopy will prompt to terminate these processes before continuing. We are working to eliminate
stray processes caused by Canopy’s operation; some are caused by execution of user code.

In some cases the dialog showing the remaining Python processes would cause Canopy to crash due to
Unicode (non-English characters) in a path name. This issue has been resolved and Unicode
characters are handled correctly.

The ‘About Canopy’ dialog box offers the option to check for application updates. In the
previous release if no updates were present the ‘spinner’ indicating that a check was on-going
would continue spinning for several minutes after the last check. This has been corrected.

A new command line interface (CLI) has been added for users who prefer to work from the command
line, are writing automation scripts, or working on a machine without a graphical interface. The
CLI supports setting up Canopy installations in networked environments where users wish to share
a common environment, and creation of new virtual environments.

For each OS platform, two versions of the Canopy installer are now available to subscribers. These
differ only in the number of packages which are bundled into the installer file for immediate
installation into Canopy User Python, when Canopy is first started. Canopy’s Express installer
contains approximately 40 packages, including the entire
core SciPy software stack. Subscribers can subsequently install additional
packages as needed, via Canopy’s Package Manager. Canopy’s Full installer contains all 140+
Canopy packages.

The Express installers work well for subscribers who want to avoid installing unused packages.
Likewise, if you started as a free Canopy Express user, and are now a subscriber, you can simply
use Package Manager to add subscriber packages as needed. The Full installers are for subscribers
who want to install all packages immediately, including those who are installing into environments
with limited or no internet connectivity. The difference in installer sizes and disk usage is
given below.

One aspect of the new command line interface is support for non-GUI installs. This comes up
when users don’t have access to a Graphical User Interface on their machine (such as when
connecting via ssh), prerfer the command line, or need to automate the installation on a
network or cluster environment.

Canopy for Linux is now out of beta and in full production. Canopy is supported on RedHat
Enterprise 5 (and compatible) systems and Ubuntu 12.04 LTS. In general, Canopy typically works
without issue on RedHat Enterprise 6 (RH6) systems and other distributions. In particular,
full support for RH6 is coming after additional testing on RH6 systems.

The Documentation Browser previously identified code segments in documentation and added icons for
opening the code in the Canopy editor or executing the code in IPython. A potentially malicious
webpage could have been crafted such that it automatically executed the Python code without the
user taking action. This would only happen if the user navigated to the malicious page by entering
a URL in the Documentation Browser’s address bar.

The Documentation Browser has been modified to no longer present the icons. Instead, a right- click
menu generated by Python (instead of JavaScript) has been added with the same functionality. This
removes the ability for JavaScript code to execute Python code.

The previous version of Package Manager did not support a means of interrupting the download
or install of a batch of packages. For large packages, or a large number of packages such as
when “Install All Canopy Packages” was pressed, this could take a long time to complete, especially
over slower Internet connections.

On multi-user systems it is now possible to configure system-wide default preference settings. The
preference file is the same format as the per-user preferences.ini file
(see Where are the preference and log files located?). The system
preference can be set by creating a preference.ini file (or copying a per-user one) to the root
installation directory of Canopy. The default path to the root installation directory is shown below
by operating system.

In some cases Canopy would fail with the error “Failed to set up your environment”. This error
could be triggered when the user’s home directory was stored on a network drive. The issue has
been corrected.

In the About Canopy dialog box, when an update was available clicking ‘Install on Quit’
could cause Canopy to abort. This was caused by an error in the code that closed the GUI
and particularly showed up under Linux. This issue has been corrected.

The Canopy command can be used on all platforms to open files from the command line simply
by adding the name of a file to the command line. For example:

canopy.exe my_file.py

In the previous release, the file was opened using the case as typed on the command line
instead of the case of the file itself. On case-insensitive file systems such as on Windows
this worked correctly. However, it was then possible to have the same file open multiple
times in Canopy, resulting in a confusing display. This has been corrected and the file is
opened with the actual case of the file itself.

The MSI version in previous releases was not correctly tracking the actual Canopy version
installed. This has been corrected and is reported as ‘1.1.0’ for this release. The MSI
version will reflect the version of Canopy installed via an MSI, which may be an older
version than is running if Canopy updates have been applied.

From Canopy you can create new virtual environment with the canopy_cli venv command. In
the past venv supported nesting two layers deep. This restriction has been removed and it is
possible to create arbitrarily-nested virtual environment.

In this example, since the -s switch is provided, venv3 can import any package that is
installed into venv3, venv2, or venv1.

A common scenario for using nested virtual environments is to experiment with package changes
without impacting a stable, working environment. For example, is venv1 is being used for a
project and is work, venv2 can be created as above and it starts out with all of the packages
from venv1. Then alternate package versions can selectively be installed in venv2 and code
run it in for testing without impacting venv1.

Under rare circumstances, the ‘modified’ flag in the text editor is incorrectly set to
‘unmodified’. This results in no changes being saved when File -> Save is used and Canopy
will not warn of unsaved changes before exiting. This can result in a loss of any edits
made in the tool.

This issue has been corrected and we recommend all Canopy users update from 1.0.3 to
1.0.4.

The preferences dialog (Edit -> Preferences) displays an informational message if Canopy
is not currently configured as your default Python environment and provides a button
to set up your environment to make it the default. In Canopy 1.0.3 on Windows this
informational message is sometimes displayed when Canopy is the default environment,
even after clicking the button to make it so.

This issue has been resolved and the detection algorithm has been improved. The display
now also includes information indicating if another Python environment has been configured
in the system PATH specification, making it so Canopy cannot be made the default.

Proxy firewalls are used by many organizations to control traffic to/from their networks and
require that applications connect through the proxy server in order to access resources on the
Internet. Canopy now supports preference items for configuring proxy support, available under
Edit -> Preferences (Canopy -> Preferences on Mac OS). See the ‘Network’ tab.

The previous version of Canopy did not set a standard registry key that many third-party
installers and Python tools use to find the default Python environment on Windows systems. As a
result, non-Enthought Python package installers such as those produced by Christoph Gohlke were
unable to install packages into Canopy. This has been corrected. When Canopy is made the default
Python environment these installers should now find the User Python Environment.

When Canopy was installed to an NFS4-mounted file system under Linux the installation had the uid
and gui set to “506”. This has been corrected and when the files are now extracted using the ‘tar’
command the -no-same-id flag is passed.

When applying an update to Canopy at times it would appear to “hang” at 98% or 100% complete and
not return. This was a UI issue where the progress bar reflected the download process, but not the
installation process, which could sometimes take several minutes or more. The UI has been changed
to reflect the separate operations of download and installation.

A context-sensitive (right-click) menu item now allows the recent files list in the code
editor navigation tree to be cleared. A second menu item allows any missing / deleted files to be
cleared. Additionally, individual files can be removed from the list by right-clicking on the item.

The file navigation pane in the Code Editor (left-side of window by default) defaults to showing
your home directory. This can be configured by right-clicking in the navigation tree and adding or
removing directories from the list.

In the previous version this configuration was persisted when a session was saved (Window -> Save
Window as Session or Window -> Save All Windows as a Session) and restored only when a session was
restored. This has been changed to persist the configuration independently as well to a session so
a session does not need to be restored. When you do restore a session with a different
configuration of the tree, the configuration saved in the session takes precedences.

Some third-party extensions containing C or C++ code would fail to link when Canopy’s User Python
Environment was used on Mac OS. This was because the libpython2.7.dylib dynamic library was only
available in the core installation. This library is now copied into each virtual environment to
make it easier to build these extensions.

A combination of build errors caused some or all of the Tkinter (and Tck/TK dependencies) to be
missing on Windows, Mac OS, and Linux installations. In some cases this would cause Tkinter to not
import, and in others the package would import but would fail during usage. This has been
corrected and Tkinter should function correctly on all platforms.

On Windows the environment variable %HOME% is not always set, and is sometimes set by third-party
applications. If %HOME% is set to something other than your home directory, or particularly to an
unwritable directory, Canopy would fail with an Unexpected Error during initial setup. This has
been corrected.

By default Canopy automatically checks for and downloads product updates as they become available.
These updates are not installed until explicitly done so by going to Help -> Canopy Application
Updates...

A new preference item has been added to disable the automatic downloading of updates for users
with limited or metered Internet access. Updates can be explicitly downloaded by going to Help ->
Canopy Application Updates... and clicking ‘Check for Updates’.

On Mac OS Canopy sets the DYLD_FALLBACK_LIBRARY_PATH so modules can find shared libraries in the
user Python environment as well as the core application install. The default for this environment
variable was set incorrectly so some modules failed to find the C library. This has been
corrected.

Canopy depends on the library libjpeg62 to read JPEG-format images. Previous releases did not include
this library and depended on it being available on the user’s system. However, this version is old
enough that some Linux distributions no longer provide it. Canopy now includes this library.

The previous version of Canopy was missing some libraries necessary for SSL/TLS support, and thus
the ability to display secured HTTP (HTTPS) pages in the documentation browser. This would cause
the pages to show a network error. This has been corrected and HTTPS pages now display
correctly in Canopy.

White space (spaces, tabs mostly) at the end of lines of programs doesn’t usually have an
effect, though many programming editors automatical remove it. If some editors remove it and some
don’t, this can cause problems when comparing two versions of a file if the comparison utility
doesn’t ignore white space differences.

An option has been added to the Preferences dialog under the ‘editor’ tab to automatically strip
white space at the end of lines. This occurs whenever the file is saved. By default, this option
is off for compatibility with previous Canopy versions.

NOTE: Please look for the Canopy 1.0.3 release following closely after 1.0.2

A defect in previous releases could cause the installation of Canopy updates to hang and fail
if Canopy was installed using escalated privileges. For example, this could happen if Canopy was
installed as an Administrator user but tries to apply the updates when running at standard user
access levels. The issue would occur when Canopy attempted to request increased access levels
from the OS (Windows, Linux, or Mac OS).

The 1.0.2 release fixes this issue in preparation for the 1.0.3 release. As such, 1.0.3 will
only be visible after 1.0.2 has been applied.

In-app registration via the Canopy welcome screen fails with a “403: forbidden” error. This has been corrected
and registration should now work correctly. The workaround for previous versions is to register for a user
account directly at https://www.enthought.com/accounts/register/ and then log in via the Canopy welcome screen.

The Canopy Package Manager supports in-app purchases of subscriptions to the package repository. This is
done by displaying the Enthought.com purchase web page in the application. After some updates to the
website, the purchase URL was not correctly updated and resulted in a “page not found” (404) error.
The URL has been corrected and the purchase page displays correctly now.

In the previous release, packages such as Pip that install command line utilities were installed using
the wrong Python executable when installed via Package Manager. Instead of using Python from the ‘User’
virtual environment, the Pythone executable from the ‘System’ virtual environment was selected. This
resulted in Python packages potentially being installed in the wrong environment or Python not finding
an installed package.

This release corrects the issue and automatically fixes any incorrectly installed packages.

The documentation browser finally includes basic search capabilities for searching within
displayed documentation. The search functionality is available by pressing Ctrl-F (Windows,
and Linux) or Cmd-F (Mac OS).

Additionally, direct links to the documentation on the Pandas and SymPy packages have been
added to the main documentation browser page.

Canopy now has very basic, experimental support for connecting through proxy firewalls. This
functionality is still being tested and is being made available for users who require it and
wish to help test it and provide feedback.

The proxy support enables the Package Manager, Canopy software update fuctionality, and
Documentation Brower to make HTTP and HTTPS connections when connecting through some common
proxy server configurations. The proxy functionality can be configured in one of two ways: by
editing the Canopy preferences.ini file or by setting an environment variable.

To edit the preferences.ini file, follow the following steps:

Exit Canopy. This is important because Canopy overwrites the preference.ini file on exit.

The values proxy_server and proxy_port must be set to the name of the server and the
port number to connect to. The proxy_username and proxy_password settings are optional
and only need to be provided if your proxy server requires authentication.

Important: If you set proxy_password you will be storing your password in plain text
which is insecure. In some environments this password is regularly set in environment variables
and is considered insecure already so this is not an issue. If the password is expected to be
secure it should not be set here. Future Canopy versions will correctly store this password
securely.

Once these changes have been made, save the file and restart Canopy. When the Package Manager
is opened it should now be able to correctly download the index of packages and install new
packages.

The Canopy installers include the core SciPy software stack
and other packages listed in the Canopy Express
version. When Canopy is installed all of these packages are installed in the user Python
environment.

Subscribers have access to the full Canopy Python repository via the Canopy Package Manager.
Additional packages can be installed individually as needed or users can install all available
packages. To install all packages, click the button labeled “Install All Canopy Packages” found
in the lower-right corner of the Package Manager window. This option is available to Canopy (EPD)
subscribers.

In Mac OS 10.8 Mountain Lion, Apple introduced a feature called “Gatekeeper” that restricts
unidentified applications from installing and running. The Canopy application has not
yet been been added to the Gatekeeper identification system.

As a result you may see a message like this if you attempt to start the Canopy
application:

To open Canopy the first time, you need to Control-click the Canopy application icon to
bring up a context menu, and select “Open”. You will then see a dialog which has a
message:

Click “Open” and Canopy will start.

You only need to do this once. After this you will be able to start Canopy application
normally by double-clicking its icon.

When Canopy is run for the first time, it setups up your Python environment and offers
to make Canopy the default Python environment. It does this by pre-pending the location
of Canopy’s Python interpreter to the front of the PATH environment variable. In most
cases this has the desired behavior and makes Canopy the default for the Windows Command
Prompt and other terminals.

This method does not work if another application with Python has been installed on the
system by an administrator and the path to that application has been added to the
system PATH setting. Windows first uses the system’s PATH setting and then
the user’s PATH, so the other application will be found first.

The workaround is to manually adjust the system PATH setting if possible.
Alternately, PATH must be set once the Windows Command Prompt has been started.