text:
Easy Install¶
Easy Install is a python module (
easy_install) bundled with
that lets you automatically download, build, install, and manage Python
Please share your experiences with us! If you encounter difficulty installing a package, please contact us via the distutils mailing list. (Note: please DO NOT send private email directly to the author of setuptools; it will be discarded. The mailing list is a searchable archive of previously-asked and answered questions; you should begin your research there before reporting something as a bug – and then do so via list discussion first.)
(Also, if you'd like to learn about how you can use
setuptools to make your
own packages work better with EasyInstall, or provide EasyInstall-like features
without requiring your users to use EasyInstall directly, you'll probably want
to check out the full setuptools documentation as well.)
Table of Contents
- Easy Install
- Using "Easy Install"
- Installing "Easy Install"
- Downloading and Installing a Package
- Upgrading a Package
- Changing the Active Version
- Uninstalling Packages
- Managing Scripts
- Executables and Launchers
- Tips & Techniques
- Password-Protected Sites
- Using .pypirc Credentials
- Reference Manual
- History
- Future Plans
- Using "Easy Install"
Using "Easy Install"¶
Installing "Easy Install"¶
Please see the setuptools PyPI page for download links and basic installation instructions for each of the supported platforms.
You will need at least Python 3.4 or 2.7. An
easy_install script will be
installed in the normal location for Python scripts on your platform.
Note that the instructions on the setuptools PyPI page assume that you are
are installing to Python's primary
site-packages directory. If this is
not the case, you should consult the section below on Custom Installation
Locations before installing. (And, on Windows, you should not use the
.exe installer when installing to an alternate location.)
Note that
easy_install normally works by downloading files from the
internet. If you are behind an NTLM-based firewall that prevents Python
programs from accessing the net directly, you may wish to first install and use
the APS proxy server, which lets you get past such
firewalls in the same way that your web browser(s) do.
(Alternately, if you do not wish easy_install to actually download anything, you
can restrict it from doing so with the
--allow-hosts option; see the
sections on restricting downloads with –allow-hosts and command-line
options for more details.)
If EasyInstall/setuptools appears to install correctly, and you can run the
easy_install command but it fails with an
ImportError, the most likely
cause is that you installed to a location other than
without taking any of the steps described in the Custom Installation
Locations section below. Please see that section and follow the steps to
make sure that your custom location will work correctly. Then re-install.
Similarly, if you can run
easy_install, and it appears to be installing
packages, but then you can't import them, the most likely issue is that you
installed EasyInstall correctly but are using it to install packages to a
non-standard location that hasn't been properly prepared. Again, see the
section on Custom Installation Locations for more details.
Windows Notes¶
Installing setuptools will provide an
easy_install command according to
the techniques described in Executables and Launchers. If the
easy_install command is not available after installation, that section
provides details on how to configure Windows to make the commands available.
Downloading and Installing a Package¶
For basic use of
easy_install, you need only supply the filename or URL of
a source distribution or .egg file (Python Egg).
Example 1. Install a package by name, searching PyPI for the latest version, and automatically downloading, building, and installing it:
easy_install SQLObject
Example 2. Install or upgrade a package by name and version by finding links on a given "download page":
easy_install -f http://pythonpaste.org/package_index.html SQLObject
Example 3. Download a source distribution from a specified URL, automatically building and installing it:
easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
Example 4. Install an already-downloaded .egg file:
easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
Example 5. Upgrade an already-installed package to the latest version listed on PyPI:
easy_install --upgrade PyProtocols
Example 6. Install a source distribution that's already downloaded and extracted in the current directory (New in 0.5a9):
easy_install .
Example 7. (New in 0.6a1) Find a source distribution or Subversion
checkout URL for a package, and extract it or check it out to
~/projects/sqlobject (the name will always be in all-lowercase), where it
can be examined or edited. (The package will not be installed, but it can
easily be installed with
easy_install ~/projects/sqlobject. See Editing
and Viewing Source Packages below for more info.):
easy_install --editable --build-directory ~/projects SQLObject
Example 7. (New in 0.6.11) Install a distribution within your home dir:
easy_install --user SQLAlchemy
Easy Install accepts URLs, filenames, PyPI package names (i.e.,
"distribution" names), and package+version specifiers. In each case, it will
attempt to locate the latest available version that meets your criteria.
When downloading or processing downloaded files, Easy Install recognizes
distutils source distribution files with extensions of .tgz, .tar, .tar.gz,
.tar.bz2, or .zip. And of course it handles already-built .egg
distributions as well as
.win32.exe installers built using distutils.
By default, packages are installed to the running Python installation's
site-packages directory, unless you provide the
-d or
option to specify an alternative directory, or specify an alternate location
using distutils configuration files. (See Configuration Files, below.)
By default, any scripts included with the package are installed to the running
Python installation's standard script installation location. However, if you
specify an installation directory via the command line or a config file, then
the default directory for installing scripts will be the same as the package
installation directory, to ensure that the script will have access to the
installed package. You can override this using the
-s or
Installed packages are added to an
easy-install.pth file in the install
directory, so that Python will always use the most-recently-installed version
of the package. If you would like to be able to select which version to use at
runtime, you should use the
-m or
--multi-version option.
Upgrading a Package¶
You don't need to do anything special to upgrade a package: just install the new version, either by requesting a specific version, e.g.:
easy_install "SomePackage==2.0"
a version greater than the one you have now:
easy_install "SomePackage>2.0"
using the upgrade flag, to find the latest available version on PyPI:
easy_install --upgrade SomePackage
or by using a download page, direct download URL, or package filename:
easy_install -f http://example.com/downloads ExamplePackage
easy_install http://example.com/downloads/ExamplePackage-2.0-py2.4.egg
easy_install my_downloads/ExamplePackage-2.0.tgz
If you're using
-m or
--multi-version , using the
function at runtime automatically selects the newest installed version of a
package that meets your version criteria. So, installing a newer version is
the only step needed to upgrade such packages.
If you're installing to a directory on PYTHONPATH, or a configured "site"
directory (and not using
-m), installing a package automatically replaces
any previous version in the
easy-install.pth file, so that Python will
import the most-recently installed version by default. So, again, installing
the newer version is the only upgrade step needed.
If you haven't suppressed script installation (using
--exclude-scripts or
-x), then the upgraded version's scripts will be installed, and they will
be automatically patched to
require() the corresponding version of the
package, so that you can use them even if they are installed in multi-version
easy_install never actually deletes packages (unless you're installing a
package with the same name and version number as an existing package), so if
you want to get rid of older versions of a package, please see Uninstalling
Packages, below.
Changing the Active Version¶
If you've upgraded a package, but need to revert to a previously-installed version, you can do so like this:
easy_install PackageName==1.2.3
1.2.3 is replaced by the exact version number you wish to switch to.
If a package matching the requested name and version is not already installed
in a directory on
sys.path, it will be located via PyPI and installed.
If you'd like to switch to the latest installed version of
PackageName, you
can do so like this:
easy_install PackageName
This will activate the latest installed version. (Note: if you have set any
find_links via distutils configuration files, those download pages will be
checked for the latest available version of the package, and it will be
downloaded and installed if it is newer than your current version.)
Note that changing the active version of a package will install the newly
active version's scripts, unless the
--exclude-scripts or
-x option is
Uninstalling Packages¶
If you have replaced a package with another version, then you can just delete the package(s) you don't need by deleting the PackageName-versioninfo.egg file or directory (found in the installation directory).
If you want to delete the currently installed version of a package (or all versions of a package), you should first run:
easy_install -m PackageName
This will ensure that Python doesn't continue to search for a package you're planning to remove. After you've done this, you can safely delete the .egg files or directories, along with any scripts you wish to remove.
Managing Scripts¶
Whenever you install, upgrade, or change versions of a package, EasyInstall
automatically installs the scripts for the selected package version, unless
you tell it not to with
-x or
--exclude-scripts. If any scripts in
the script directory have the same name, they are overwritten.
Thus, you do not normally need to manually delete scripts for older versions of a package, unless the newer version of the package does not include a script of the same name. However, if you are completely uninstalling a package, you may wish to manually delete its scripts.
EasyInstall's default behavior means that you can normally only run scripts
from one version of a package at a time. If you want to keep multiple versions
of a script available, however, you can simply use the
--multi-version or
-m option, and rename the scripts that EasyInstall creates. This works
because EasyInstall installs scripts as short code stubs that
require() the
matching version of the package the script came from, so renaming the script
has no effect on what it executes.
For example, suppose you want to use two versions of the
rst2html tool
provided by the docutils package. You might
first install one version:
easy_install -m docutils==0.3.9
then rename the
rst2html.py to
r2h_039, and install another version:
easy_install -m docutils==0.3.10
This will create another
rst2html.py script, this one using docutils
version 0.3.10 instead of 0.3.9. You now have two scripts, each using a
different version of the package. (Notice that we used
-m for both
installations, so that Python won't lock us out of using anything but the most
recently-installed version of the package.)
Executables and Launchers¶
On Unix systems, scripts are installed with as natural files with a "#!" header and no extension and they launch under the Python version indicated in the header.
On Windows, there is no mechanism to "execute" files without extensions, so EasyInstall provides two techniques to mirror the Unix behavior. The behavior is indicated by the SETUPTOOLS_LAUNCHER environment variable, which may be "executable" (default) or "natural".
Regardless of the technique used, the script(s) will be installed to a Scripts
directory (by default in the Python installation directory). It is recommended
for EasyInstall that you ensure this directory is in the PATH environment
variable. The easiest way to ensure the Scripts directory is in the PATH is
to run
Tools\Scripts\win_add2path.py from the Python directory.
Note that instead of changing your
PATH to include the Python scripts
directory, you can also retarget the installation location for scripts so they
go on a directory that's already on the
PATH. For more information see
Command-Line Options and Configuration Files. During installation,
pass command line options (such as
--script-dir) to
ez_setup.py to control where
easy_install.exe will be installed.
Windows Executable Launcher¶
If the "executable" launcher is used, EasyInstall will create a '.exe'
launcher of the same name beside each installed script (including
easy_install itself). These small .exe files launch the script of the
same name using the Python version indicated in the '#!' header.
This behavior is currently default. To force
the use of executable launchers, set
SETUPTOOLS_LAUNCHER to "executable".
Natural Script Launcher¶
EasyInstall also supports deferring to an external launcher such as
pylauncher for launching scripts.
Enable this experimental functionality by setting the
SETUPTOOLS_LAUNCHER environment variable to "natural". EasyInstall will
then install scripts as simple
scripts with a .pya (or .pyw) extension appended. If these extensions are
associated with the pylauncher and listed in the PATHEXT environment variable,
these scripts can then be invoked simply and directly just like any other
executable. This behavior may become default in a future version.
EasyInstall uses the .pya extension instead of simply the typical '.py' extension. This distinct extension is necessary to prevent Python from treating the scripts as importable modules (where name conflicts exist). Current releases of pylauncher do not yet associate with .pya files by default, but future versions should do so.
Tips & Techniques¶
Multiple Python Versions¶
EasyInstall installs itself under two names:
easy_install and
easy_install-N.N, where
N.N is the Python version
used to install it. Thus, if you install EasyInstall for both Python 3.2 and
2.7, you can use the
easy_install-3.2 or
easy_install-2.7 scripts to
install packages for the respective Python version.
Setuptools also supplies easy_install as a runnable module which may be
invoked using
python -m easy_install for any Python with Setuptools
Restricting Downloads with
You can use the
--allow-hosts (
-H) option to restrict what domains
EasyInstall will look for links and downloads on.
prevents downloading altogether. You can also use wildcards, for example
to restrict downloading to hosts in your own intranet. See the section below
on Command-Line Options for more details on the
--allow-hosts option.
By default, there are no host restrictions in effect, but you can change this default by editing the appropriate configuration files and adding:
allow_hosts = *.myintranet.example.com,*.python.org
The above example would then allow downloads only from hosts in the
python.org and
myintranet.example.com domains, unless overridden on the
command line.
Installing on Un-networked Machines¶
Just copy the eggs or source packages you need to a directory on the target
machine, then use the
-f or
--find-links option to specify that
directory's location. For example:
easy_install -H None -f somedir SomePackage
will attempt to install SomePackage using only eggs and source packages found
somedir and disallowing all remote access. You should of course make
sure you have all of SomePackage's dependencies available in somedir.
If you have another machine of the same operating system and library versions (or if the packages aren't platform-specific), you can create the directory of eggs using a command like this:
easy_install -zmaxd somedir SomePackage
This will tell EasyInstall to put zipped eggs or source packages for
SomePackage and all its dependencies into
somedir, without creating any
scripts or .pth files. You can then copy the contents of
somedir to the
target machine. (
-z means zipped eggs,
-m means multi-version, which
prevents .pth files from being used,
-a means to copy all the eggs needed,
even if they're installed elsewhere on the machine, and
-d indicates the
directory to place the eggs in.)
You can also build the eggs from local development packages that were installed
with the
setup.py develop command, by including the
-l option, e.g.:
easy_install -zmaxld somedir SomePackage
This will use locally-available source distributions to build the eggs.
Packaging Others' Projects As Eggs¶
Need to distribute a package that isn't published in egg form? You can use
EasyInstall to build eggs for a project. You'll want to use the
--exclude-scripts, and possibly
--no-deps options (
-x and
-N, respectively). Use
-d or
--install-dir to specify the location
where you'd like the eggs placed. By placing them in a directory that is
published to the web, you can then make the eggs available for download, either
in an intranet or to the internet at large.
If someone distributes a package in the form of a single
.py file, you can
wrap it in an egg by tacking an
#egg=name-version suffix on the file's URL.
So, something like this:
easy_install -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
will install the package as an egg, and this:
easy_install -zmaxd. \
-f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
will create a
.egg file in the current directory.
Creating your own Package Index¶
In addition to local directories and the Python Package Index, EasyInstall can
find download links on most any web page whose URL is given to the
--find-links) option. In the simplest case, you can simply have a web
page with links to eggs or Python source packages, even an automatically
generated directory listing (such as the Apache web server provides).
If you are setting up an intranet site for package downloads, you may want to configure the target machines to use your download site by default, adding something like this to their configuration files:
find_links = http://mypackages.example.com/somedir/
As you can see, you can list multiple URLs separated by whitespace, continuing on multiple lines if necessary (as long as the subsequent lines are indented.
If you are more ambitious, you can also create an entirely custom package index
or PyPI mirror. See the
--index-url option under Command-Line Options,
below, and also the section on Package Index "API".
Password-Protected Sites¶
If a site you want to download from is password-protected using HTTP "Basic" authentication, you can specify your credentials in the URL, like so:
You can do this with both index page URLs and direct download URLs. As long as any HTML pages read by easy_install use relative links to point to the downloads, the same user ID and password will be used to do the downloading.
Using .pypirc Credentials¶
In additional to supplying credentials in the URL,
easy_install will also
honor credentials if present in the .pypirc file. Teams maintaining a private
repository of packages may already have defined access credentials for
uploading packages according to the distutils documentation.
will attempt to honor those if present. Refer to the distutils documentation
for Python 2.5 or later for details on the syntax.
Controlling Build Options¶
EasyInstall respects standard distutils Configuration Files, so you can use them to configure build options for packages that it installs from source. For example, if you are on Windows using the MinGW compiler, you can configure the default compiler by putting something like this:
compiler = mingw32
into the appropriate distutils configuration file. In fact, since this is just
normal distutils configuration, it will affect any builds using that config
file, not just ones done by EasyInstall. For example, if you add those lines
distutils.cfg in the
distutils package directory, it will be the
default compiler for all packages you build. See Configuration Files
below for a list of the standard configuration file locations, and links to
more documentation on using distutils configuration files.
Editing and Viewing Source Packages¶
Sometimes a package's source distribution contains additional documentation,
examples, configuration files, etc., that are not part of its actual code. If
you want to be able to examine these files, you can use the
option to EasyInstall, and EasyInstall will look for a source distribution
or Subversion URL for the package, then download and extract it or check it out
as a subdirectory of the
--build-directory you specify. If you then wish
to install the package after editing or configuring it, you can do so by
rerunning EasyInstall with that directory as the target.
Note that using
--editable stops EasyInstall from actually building or
installing the package; it just finds, obtains, and possibly unpacks it for
you. This allows you to make changes to the package if necessary, and to
either install it in development mode using
setup.py develop (if the
package uses setuptools, that is), or by running
easy_install projectdir
projectdir is the subdirectory EasyInstall created for the
downloaded package.
In order to use
--editable (
-e for short), you must also supply a
--build-directory (
-b for short). The project will be placed in a
subdirectory of the build directory. The subdirectory will have the same
name as the project itself, but in all-lowercase. If a file or directory of
that name already exists, EasyInstall will print an error message and exit.
Also, when using
--editable, you cannot use URLs or filenames as arguments.
You must specify project names (and optional version requirements) so that
EasyInstall knows what directory name(s) to create. If you need to force
EasyInstall to use a particular URL or filename, you should specify it as a
--find-links item (
-f for short), and then also specify
the project name, e.g.:
easy_install -eb ~/projects \
-fhttp://prdownloads.sourceforge.net/ctypes/ctypes-0.9.6.tar.gz?download \
Dealing with Installation Conflicts¶
(NOTE: As of 0.6a11, this section is obsolete; it is retained here only so that
people using older versions of EasyInstall can consult it. As of version
0.6a11, installation conflicts are handled automatically without deleting the
old or system-installed packages, and without ignoring the issue. Instead,
eggs are automatically shifted to the front of
sys.path using special
code added to the
easy-install.pth file. So, if you are using version
0.6a11 or better of setuptools, you do not need to worry about conflicts,
and the following issues do not apply to you.)
EasyInstall installs distributions in a "managed" way, such that each
distribution can be independently activated or deactivated on
However, packages that were not installed by EasyInstall are "unmanaged",
in that they usually live all in one directory and cannot be independently
activated or deactivated.
As a result, if you are using EasyInstall to upgrade an existing package, or
to install a package with the same name as an existing package, EasyInstall
will warn you of the conflict. (This is an improvement over
install, because the
distutils just install new packages on top of old
ones, possibly combining two unrelated packages or leaving behind modules that
have been deleted in the newer version of the package.)
EasyInstall will stop the installation if it detects a conflict between an existing, "unmanaged" package, and a module or package in any of the distributions you're installing. It will display a list of all of the existing files and directories that would need to be deleted for the new package to be able to function correctly. To proceed, you must manually delete these conflicting files and directories and re-run EasyInstall.
Of course, once you've replaced all of your existing "unmanaged" packages with versions managed by EasyInstall, you won't have any more conflicts to worry about!
Compressed Installation¶
EasyInstall tries to install packages in zipped form, if it can. Zipping
packages can improve Python's overall import performance if you're not using
--multi-version option, because Python processes zipfile entries on
sys.path much faster than it does directories.
As of version 0.5a9, EasyInstall analyzes packages to determine whether they
can be safely installed as a zipfile, and then acts on its analysis. (Previous
versions would not install a package as a zipfile unless you used the
--zip-ok option.)
The current analysis approach is fairly conservative; it currently looks for:
- Any use of the
__path__variables (which should be replaced with
pkg_resourcesAPI calls)
- Possible use of
inspectfunctions that expect to manipulate source files (e.g.
- Top-level modules that might be scripts used with
python -m(Python 2.4)
If any of the above are found in the package being installed, EasyInstall will
assume that the package cannot be safely run from a zipfile, and unzip it to
a directory instead. You can override this analysis with the
-zip-ok flag,
which will tell EasyInstall to install the package as a zipfile anyway. Or,
you can use the
--always-unzip flag, in which case EasyInstall will always
unzip, even if its analysis says the package is safe to run as a zipfile.
Normally, however, it is simplest to let EasyInstall handle the determination of whether to zip or unzip, and only specify overrides when needed to work around a problem. If you find you need to override EasyInstall's guesses, you may want to contact the package author and the EasyInstall maintainers, so that they can make appropriate changes in future versions.
(Note: If a package uses
setuptools in its setup script, the package author
has the option to declare the package safe or unsafe for zipped usage via the
zip_safe argument to
setup(). If the package author makes such a
declaration, EasyInstall believes the package's author and does not perform its
own analysis. However, your command-line option, if any, will still override
the package author's choice.)
Reference Manual¶
Configuration Files¶
(New in 0.4a2)
You may specify default options for EasyInstall using the standard
distutils configuration files, under the command heading
EasyInstall will look first for a
setup.cfg file in the current directory,
then a
~/.pydistutils.cfg or
$HOME\\pydistutils.cfg (on Unix-like OSes
and Windows, respectively), and finally a
distutils.cfg file in the
distutils package directory. Here's a simple example:
# set the default location to install packages
install_dir = /home/me/lib/python
# Notice that indentation can be used to continue an option
# value; this is especially useful for the "--find-links"
# option, which tells easy_install to use download links on
# these pages before consulting PyPI:
find_links = http://sqlobject.org/
In addition to accepting configuration for its own options under
[easy_install], EasyInstall also respects defaults specified for other
distutils commands. For example, if you don't set an
install_dir for
[easy_install], but have set an
install_lib for the
command, this will become EasyInstall's default installation directory. Thus,
if you are already using distutils configuration files to set default install
locations, build options, etc., EasyInstall will respect your existing settings
until and unless you override them explicitly in an
[easy_install] section.
For more information, see also the current Python documentation on the use and location of distutils configuration files.
Notice that
easy_install will use the
setup.cfg from the current
working directory only if it was triggered from
setup.py through the
install_requires option. The standalone command will not use that file.
Command-Line Options¶
--zip-ok, -z
- Install all packages as zip files, even if they are marked as unsafe for running as a zipfile. This can be useful when EasyInstall's analysis of a non-setuptools package is too conservative, but keep in mind that the package may not work correctly. (Changed in 0.5a9; previously this option was required in order for zipped installation to happen at all.)
--always-unzip, -Z
Don't install any packages as zip files, even if the packages are marked as safe for running as a zipfile. This can be useful if a package does something unsafe, but not in a way that EasyInstall can easily detect. EasyInstall's default analysis is currently very conservative, however, so you should only use this option if you've had problems with a particular package, and after reporting the problem to the package's maintainer and to the EasyInstall maintainers.
(Note: the
-z/-Zoptions only affect the installation of newly-built or downloaded packages that are not already installed in the target directory; if you want to convert an existing installed version from zipped to unzipped or vice versa, you'll need to delete the existing version first, and re-run EasyInstall.)
--multi-version, -m
"Multi-version" mode. Specifying this option prevents
easy_installfrom adding an
easy-install.pthentry for the package being installed, and if an entry for any version the package already exists, it will be removed upon successful installation. In multi-version mode, no specific version of the package is available for importing, unless you use
pkg_resources.require()to put it on
sys.path. This can be as simple as:
from pkg_resources import require require("SomePackage", "OtherPackage", "MyPackage")
which will put the latest installed version of the specified packages on
sys.pathfor you. (For more advanced uses, like selecting specific versions and enabling optional dependencies, see the
pkg_resourcesAPI doc.)
Changed in 0.6a10: this option is no longer silently enabled when installing to a non-PYTHONPATH, non-"site" directory. You must always explicitly use this option if you want it to be active.
--upgrade, -U(New in 0.5a4)
- By default, EasyInstall only searches online if a project/version
requirement can't be met by distributions already installed
on sys.path or the installation directory. However, if you supply the
-Uflag, EasyInstall will always check the package index and
--find-linksURLs before selecting a version to install. In this way, you can force EasyInstall to use the latest available version of any package it installs (subject to any version requirements that might exclude such later versions).
--install-dir=DIR, -d DIR
Set the installation directory. It is up to you to ensure that this directory is on
sys.pathat runtime, and to use
pkg_resources.require()to enable the installed package(s) that you need.
(New in 0.4a2) If this option is not directly specified on the command line or in a distutils configuration file, the distutils default installation location is used. Normally, this would be the
site-packagesdirectory, but if you are using distutils configuration files, setting things like
install_lib, then those settings are taken into account when computing the default installation directory, as is the
--script-dir=DIR, -s DIR
- Set the script installation directory. If you don't supply this option
(via the command line or a configuration file), but you have supplied
--install-dir(via command line or config file), then this option defaults to the same directory, so that the scripts will be able to find their associated package installation. Otherwise, this setting defaults to the location where the distutils would normally install scripts, taking any distutils configuration file settings into account.
--exclude-scripts, -x
- Don't install scripts. This is useful if you need to install multiple versions of a package, but do not want to reset the version that will be run by scripts that are already installed.
--user(New in 0.6.11)
- Use the user-site-packages as specified in PEP 370 instead of the global site-packages.
--always-copy, -a(New in 0.5a4)
Copy all needed distributions to the installation directory, even if they are already present in a directory on sys.path. In older versions of EasyInstall, this was the default behavior, but now you must explicitly request it. By default, EasyInstall will no longer copy such distributions from other sys.path directories to the installation directory, unless you explicitly gave the distribution's filename on the command line.
Note that as of 0.6a10, using this option excludes "system" and "development" eggs from consideration because they can't be reliably copied. This may cause EasyInstall to choose an older version of a package than what you expected, or it may cause downloading and installation of a fresh copy of something that's already installed. You will see warning messages for any eggs that EasyInstall skips, before it falls back to an older version or attempts to download a fresh copy.
--find-links=URLS_OR_FILENAMES, -f URLS_OR_FILENAMES
Scan the specified "download pages" or directories for direct links to eggs or other distributions. Any existing file or directory names or direct download URLs are immediately added to EasyInstall's search cache, and any indirect URLs (ones that don't point to eggs or other recognized archive formats) are added to a list of additional places to search for download links. As soon as EasyInstall has to go online to find a package (either because it doesn't exist locally, or because
-Uwas used), the specified URLs will be downloaded and scanned for additional direct links.
Eggs and archives found by way of
--find-linksare only downloaded if they are needed to meet a requirement specified on the command line; links to unneeded packages are ignored.
If all requested packages can be found using links on the specified download pages, the Python Package Index will not be consulted unless you also specified the
(Note: if you want to refer to a local HTML file containing links, you must use a
file:URL, as filenames that do not refer to a directory, egg, or archive are ignored.)
You may specify multiple URLs or file/directory names with this option, separated by whitespace. Note that on the command line, you will probably have to surround the URL list with quotes, so that it is recognized as a single option value. You can also specify URLs in a configuration file; see Configuration Files, above.
Changed in 0.6a10: previously all URLs and directories passed to this option were scanned as early as possible, but from 0.6a10 on, only directories and direct archive links are scanned immediately; URLs are not retrieved unless a package search was already going to go online due to a package not being available locally, or due to the use of the
--no-find-linksBlocks the addition of any link.
This parameter is useful if you want to avoid adding links defined in a project easy_install is installing (whether it's a requested project or a dependency). When used,
--find-linksis ignored.
Added in Distribute 0.6.11 and Setuptools 0.7.
--index-url=URL, -i URL(New in 0.4a1; default changed in 0.6c7)
- Specifies the base URL of the Python Package Index. The default is
https://pypi.org/simple/ if not specified. When a package is requested
that is not locally available or linked from a
--find-linksdownload page, the package index will be searched for download pages for the needed package, and those download pages will be searched for links to download an egg or source distribution.
--editable, -e(New in 0.6a1)
- Only find and download source distributions for the specified projects,
unpacking them to subdirectories of the specified
--build-directory. EasyInstall will not actually build or install the requested projects or their dependencies; it will just find and extract them for you. See Editing and Viewing Source Packages above for more details.
--build-directory=DIR, -b DIR(UPDATED in 0.6a1)
Set the directory used to build source packages. If a package is built from a source distribution or checkout, it will be extracted to a subdirectory of the specified directory. The subdirectory will have the same name as the extracted distribution's project, but in all-lowercase. If a file or directory of that name already exists in the given directory, a warning will be printed to the console, and the build will take place in a temporary directory instead.
This option is most useful in combination with the
--editableoption, which forces EasyInstall to only find and extract (but not build and install) source distributions. See Editing and Viewing Source Packages, above, for more information.
--verbose, -v, --quiet, -q(New in 0.4a4)
- Control the level of detail of EasyInstall's progress messages. The
default detail level is "info", which prints information only about
relatively time-consuming operations like running a setup script, unpacking
an archive, or retrieving a URL. Using
--quietdrops the detail level to "warn", which will only display installation reports, warnings, and errors. Using
--verboseincreases the detail level to include individual file-level operations, link analysis messages, and distutils messages from any setup scripts that get run. If you include the
-voption more than once, the second and subsequent uses are passed down to any setup scripts, increasing the verbosity of their reporting as well.
--dry-run, -n(New in 0.4a4)
- Don't actually install the package or scripts. This option is passed down to any setup scripts run, so packages should not actually build either. This does not skip downloading, nor does it skip extracting source distributions to a temporary/build directory.
-O LEVEL(New in 0.4a4)
- If you are installing from a source distribution, and are not using the
--zip-okoption, this option controls the optimization level for compiling installed
.pyfiles to
.pyofiles. It does not affect the compilation of modules contained in
.eggfiles, only those in
.eggdirectories. The optimization level can be set to 0, 1, or 2; the default is 0 (unless it's set under
install_libin one of your distutils configuration files).
--record=FILENAME(New in 0.5a4)
- Write a record of all installed files to FILENAME. This is basically the same as the same option for the standard distutils "install" command, and is included for compatibility with tools that expect to pass this option to "setup.py install".
--site-dirs=DIRLIST, -S DIRLIST(New in 0.6a1)
- Specify one or more custom "site" directories (separated by commas).
"Site" directories are directories where
.pthfiles are processed, such as the main Python
site-packagesdirectory. As of 0.6a10, EasyInstall automatically detects whether a given directory processes
.pthfiles (or can be made to do so), so you should not normally need to use this option. It is is now only necessary if you want to override EasyInstall's judgment and force an installation directory to be treated as if it supported
--no-deps, -N(New in 0.6a6)
- Don't install any dependencies. This is intended as a convenience for tools that wrap eggs in a platform-specific packaging system. (We don't recommend that you use it for anything else.)
--allow-hosts=PATTERNS, -H PATTERNS(New in 0.6a6)
Restrict downloading and spidering to hosts matching the specified glob patterns. E.g.
-H *.python.orgrestricts web access so that only packages listed and downloadable from machines in the
python.orgdomain. The glob patterns must match the entire user/host/port section of the target URL(s). For example,
*.python.orgwill NOT accept a URL like
http://www.python.org:8080/. Multiple patterns can be specified by separating them with commas. The default pattern is
*, which matches anything.
In general, this option is mainly useful for blocking EasyInstall's web access altogether (e.g.
-Hlocalhost), or to restrict it to an intranet or other trusted site. EasyInstall will do the best it can to satisfy dependencies given your host restrictions, but of course can fail if it can't find suitable packages. EasyInstall displays all blocked URLs, so that you can adjust your
--allow-hostssetting if it is more strict than you intended. Some sites may wish to define a restrictive default setting for this option in their configuration files, and then manually override the setting on the command line as needed.
--prefix=DIR(New in 0.6a10)
Use the specified directory as a base for computing the default installation and script directories. On Windows, the resulting default directories will be
prefix\\Scripts, while on other platforms the defaults will be
prefix/lib/python2.X/site-packages(with the appropriate version substituted) for libraries and
prefix/binfor scripts.
Note that the
--prefixoption only sets the default installation and script directories, and does not override the ones set on the command line or in a configuration file.
--local-snapshots-ok, -l(New in 0.6c6)
Normally, EasyInstall prefers to only install released versions of projects, not in-development ones, because such projects may not have a currently-valid version number. So, it usually only installs them when their
setup.pydirectory is explicitly passed on the command line.
However, if this option is used, then any in-development projects that were installed using the
setup.py developcommand, will be used to build eggs, effectively upgrading the "in-development" project to a snapshot release. Normally, this option is used only in conjunction with the
--always-copyoption to create a distributable snapshot of every egg needed to run an application.
Note that if you use this option, you must make sure that there is a valid version number (such as an SVN revision number tag) for any in-development projects that may be used, as otherwise EasyInstall may not be able to tell what version of the project is "newer" when future installations or upgrades are attempted.
Custom Installation Locations¶
By default, EasyInstall installs python packages into Python's main
site-packages directory,
and manages them using a custom
.pth file in that same directory.
Very often though, a user or developer wants
easy_install to install and manage python packages
in an alternative location, usually for one of 3 reasons:
- They don't have access to write to the main Python site-packages directory.
- They want a user-specific stash of packages, that is not visible to other users.
- They want to isolate a set of packages to a specific python application, usually to minimize the possibility of version conflicts.
Historically, there have been many approaches to achieve custom installation. The following section lists only the easiest and most relevant approaches [1].
Use the "–user" option and customize "PYTHONUSERBASE"
|There are older ways to achieve custom installation using various
easy_install and
setup.py install options, combined with
PYTHONPATH and/or
PYTHONUSERBASE alterations, but all of these are effectively deprecated by the User scheme brought in by PEP-370.
Use the "–user" option¶
Python provides a User scheme for installation, which means that all
python distributions support an alternative install location that is specific to a user [3].
The Default location for each OS is explained in the python documentation
for the
site.USER_BASE variable. This mode of installation can be turned on by
specifying the
--user option to
setup.py install or
This approach serves the need to have a user-specific stash of packages.
|Prior to the User scheme, there was the Home scheme, which is still available, but requires more effort than the User scheme to get packages recognized.
Use the "–user" option and customize "PYTHONUSERBASE"¶
The User scheme install location can be customized by setting the
PYTHONUSERBASE environment
variable, which updates the value of
site.USER_BASE. To isolate packages to a specific
application, simply set the OS environment of that application to a specific value of
PYTHONUSERBASE, that contains just those packages.
Use "virtualenv"¶
"virtualenv" is a 3rd-party python package that effectively "clones" a python installation, thereby
creating an isolated location to install packages. The evolution of "virtualenv" started before the existence
of the User installation scheme. "virtualenv" provides a version of
easy_install that is
scoped to the cloned python install and is used in the normal way. "virtualenv" does offer various features
that the User installation scheme alone does not provide, e.g. the ability to hide the main python site-packages.
Please refer to the virtualenv documentation for more details.
Package Index "API"¶
Custom package indexes (and PyPI) must follow the following rules for EasyInstall to be able to look up and download packages:
Except where stated otherwise, "pages" are HTML or XHTML, and "links" refer to
Individual project version pages' URLs must be of the form
base/projectname/version, where
baseis the package index's base URL.
Omitting the
/versionpart of a project page's URL (but keeping the trailing
/) should result in a page that is either:
- The single active version of that project, as though the version had been explicitly included, OR
- A page with links to all of the active version pages for that project.
Individual project version pages should contain direct links to downloadable distributions where possible. It is explicitly permitted for a project's "long_description" to include URLs, and these should be formatted as HTML links by the package index, as EasyInstall does no special processing to identify what parts of a page are index-specific and which are part of the project's supplied description.
Where available, MD5 information should be added to download URLs by appending a fragment identifier of the form
#md5=..., where
...is the 32-character hex MD5 digest. EasyInstall will verify that the downloaded file's MD5 digest matches the given value.
Individual project version pages should identify any "homepage" or "download" URLs using
rel="download"attributes on the HTML elements linking to those URLs. Use of these attributes will cause EasyInstall to always follow the provided links, unless it can be determined by inspection that they are downloadable distributions. If the links are not to downloadable distributions, they are retrieved, and if they are HTML, they are scanned for download links. They are not scanned for additional "homepage" or "download" links, as these are only processed for pages that are part of a package index site.
The root URL of the index, if retrieved with a trailing
/, must result in a page containing links to all projects' active version pages.
(Note: This requirement is a workaround for the absence of case-insensitive
safe_name()matching of project names in URL paths. If project names are matched in this fashion (e.g. via the PyPI server, mod_rewrite, or a similar mechanism), then it is not necessary to include this all-packages listing page.)
If a package index is accessed via a
file://URL, then EasyInstall will automatically use
index.htmlfiles, if present, when trying to read a directory with a trailing
/on the URL.
Backward Compatibility¶
Package indexes that wish to support setuptools versions prior to 0.6b4 should also follow these rules:
Homepage and download links must be preceded with
"<th>Home Page"or
"<th>Download URL", in addition to (or instead of) the
rel=""attributes on the actual links. These marker strings do not need to be visible, or uncommented, however! For example, the following is a valid homepage link that will work with any version of setuptools:
<li> <strong>Home Page:</strong> <!-- <th>Home Page --> <a rel="homepage" href="http://sqlobject.org">http://sqlobject.org</a> </li>
Even though the marker string is in an HTML comment, older versions of EasyInstall will still "see" it and know that the link that follows is the project's home page URL.
The pages described by paragraph 3(b) of the preceding section must contain the string
"Index of Packages</title>"somewhere in their text. This can be inside of an HTML comment, if desired, and it can be anywhere in the page. (Note: this string MUST NOT appear on normal project pages, as described in paragraphs 2 and 3(a)!)
In addition, for compatibility with PyPI versions that do not use
fragment IDs, EasyInstall uses the following regular expression to match PyPI's
displayed MD5 info (broken onto two lines for readability):
<a href="([^"#]+)">([^<]+)</a>\n\s+\(<a href="[^?]+\?:action=show_md5
- 0.6c9
- Fixed
win32.exesupport for .pth files, so unnecessary directory nesting is flattened out in the resulting egg. (There was a case-sensitivity problem that affected some distributions, notably
- Prevent
--help-commandsand other junk from showing under Python 2.5 when running
easy_install --help.
- Fixed GUI scripts sometimes not executing on Windows
- Fixed not picking up dependency links from recursive dependencies.
- Only make
.sofiles executable when unpacking eggs
- Changes for Jython compatibility
- Improved error message when a requirement is also a directory name, but the specified directory is not a source package.
- Fixed
--allow-hostsoption blocking
- Fixed HTTP SVN detection failing when the page title included a project name (e.g. on SourceForge-hosted SVN)
- Fix Jython script installation to handle
#!lines better when
sys.executableis a script.
- Removed use of deprecated
md5module if
hashlibis available
- Keep site directories (e.g.
site-packages) from being included in
- Fixed
- 0.6c7
ftp:download URLs now work correctly.
- The default
--index-urlis now
https://pypi.python.org/simple, to use the Python Package Index's new simpler (and faster!) REST API.
- 0.6c6
- EasyInstall no longer aborts the installation process if a URL it wants to retrieve can't be downloaded, unless the URL is an actual package download. Instead, it issues a warning and tries to keep going.
- Fixed distutils-style scripts originally built on Windows having their line endings doubled when installed on any platform.
- Added
--local-snapshots-okflag, to allow building eggs from projects installed using
setup.py develop.
- Fixed not HTML-decoding URLs scraped from web pages
- 0.6c5
- Fixed
.dllfiles on Cygwin not having executable permissions when an egg is installed unzipped.
- Fixed
- 0.6c4
- Added support for HTTP "Basic" authentication using
http://user:pass@hostURLs. If a password-protected page contains links to the same host (and protocol), those links will inherit the credentials used to access the original page.
- Removed all special support for Sourceforge mirrors, as Sourceforge's mirror system now works well for non-browser downloads.
- Fixed not recognizing
win32.exeinstallers that included a custom bitmap.
- Fixed not allowing
os.open()of paths outside the sandbox, even if they are opened read-only (e.g. reading
/dev/urandomfor random numbers, as is done by
os.urandom()on some platforms).
- Fixed a problem with
.pthtesting on Windows when
sys.executablehas a space in it (e.g., the user installed Python to a
Program Filesdirectory).
- Added support for HTTP "Basic" authentication using
- 0.6c3
- You can once again use "python -m easy_install" with Python 2.4 and above.
- Python 2.5 compatibility fixes added.
- 0.6c2
- Windows script wrappers now support quoted arguments and arguments containing spaces. (Patch contributed by Jim Fulton.)
- The
ez_setup.pyscript now actually works when you put a setuptools
.eggalongside it for bootstrapping an offline machine.
- A writable installation directory on
sys.pathis no longer required to download and extract a source distribution using
- Generated scripts now use
-xon the
#!line when
sys.executablecontains non-ASCII characters, to prevent deprecation warnings about an unspecified encoding when the script is run.
- 0.6c1
- EasyInstall now includes setuptools version information in the
User-Agentstring sent to websites it visits.
- EasyInstall now includes setuptools version information in the
- 0.6b4
- Fix creating Python wrappers for non-Python scripts
- Fix
ftp://directory listing URLs from causing a crash when used in the "Home page" or "Download URL" slots on PyPI.
- Fix
sys.path_importer_cachenot being updated when an existing zipfile or directory is deleted/overwritten.
- Fix not recognizing HTML 404 pages from package indexes.
- Allow
file://URLs to be used as a package index. URLs that refer to directories will use an internally-generated directory listing if there is no
index.htmlfile in the directory.
- Allow external links in a package index to be specified using
rel="download", without needing the old PyPI-specific visible markup.
- Suppressed warning message about possibly-misspelled project name, if an egg or link for that project name has already been seen.
- 0.6b3
- Fix local
--find-linkseggs not being copied except with
- Fix sometimes not detecting local packages installed outside of "site" directories.
- Fix mysterious errors during initial
setuptoolsinstall, caused by
ez_setuptrying to run
easy_installtwice, due to a code fallthru after deleting the egg from which it's running.
- Fix local
- 0.6b2
- Don't install or update a
site.pypatch when installing to a
PYTHONPATHdirectory with
--multi-version, unless an
easy-install.pthfile is already in use there.
- Construct
.pthfile paths in such a way that installing an egg whose name begins with
importdoesn't cause a syntax error.
- Fixed a bogus warning message that wasn't updated since the 0.5 versions.
- Don't install or update a
- 0.6b1
- Better ambiguity management: accept
#eggname/version even if processing what appears to be a correctly-named distutils file, and ignore
.eggfiles with no
-, since valid Python
.eggfiles always have a version number (but Scheme eggs often don't).
- Support
file://links to directories in
--find-links, so that easy_install can build packages from local source checkouts.
- Added automatic retry for Sourceforge mirrors. The new download process is to first just try dl.sourceforge.net, then randomly select mirror IPs and remove ones that fail, until something works. The removed IPs stay removed for the remainder of the run.
- Ignore bdist_dumb distributions when looking at download URLs.
- Better ambiguity management: accept
- 0.6a11
dependency_links.txtif found in a distribution, by adding the URLs to the list for scanning.
Use relative paths in
.pthfiles when eggs are being installed to the same directory as the
.pthfile. This maximizes portability of the target directory when building applications that contain eggs.
easy_install-N.Nscript(s) for convenience when using multiple Python versions.
Added automatic handling of installation conflicts. Eggs are now shifted to the front of sys.path, in an order consistent with where they came from, making EasyInstall seamlessly co-operate with system package managers.
--ignore-conflicts-at-my-riskoptions are now no longer necessary, and will generate warnings at the end of a run if you use them.
Don't recursively traverse subdirectories given to
- 0.6a10
- Added exhaustive testing of the install directory, including a spawn test
.pthfile support, and directory writability/existence checks. This should virtually eliminate the need to set or configure
- Added
--prefixoption for more do-what-I-mean-ishness in the absence of RTFM-ing. :)
- Enhanced
PYTHONPATHsupport so that you don't have to put any eggs on it manually to make it work.
--multi-versionis no longer a silent default; you must explicitly use it if installing to a non-PYTHONPATH, non-"site" directory.
- Expand
$variablesused in the
--install-dir, and
--script-diroptions, whether on the command line or in configuration files.
- Improved SourceForge mirror processing to work faster and be less affected by transient HTML changes made by SourceForge.
- PyPI searches now use the exact spelling of requirements specified on the
command line or in a project's
install_requires. Previously, a normalized form of the name was used, which could lead to unnecessary full-index searches when a project's name had an underscore (
_) in it.
- EasyInstall can now download bare
.pyfiles and wrap them in an egg, as long as you include an
#egg=name-versionsuffix on the URL, or if the
.pyfile is listed as the "Download URL" on the project's PyPI page. This allows third parties to "package" trivial Python modules just by linking to them (e.g. from within their own PyPI page or download links page).
- The
--always-copyoption now skips "system" and "development" eggs since they can't be reliably copied. Note that this may cause EasyInstall to choose an older version of a package than what you expected, or it may cause downloading and installation of a fresh version of what's already installed.
- The
--find-linksoption previously scanned all supplied URLs and directories as early as possible, but now only directories and direct archive links are scanned immediately. URLs are not retrieved unless a package search was already going to go online due to a package not being available locally, or due to the use of the
- Fixed the annoying
- Added exhaustive testing of the install directory, including a spawn test for
- 0.6a9
- Fixed
.pthfile processing picking up nested eggs (i.e. ones inside "baskets") when they weren't explicitly listed in the
- If more than one URL appears to describe the exact same distribution, prefer the shortest one. This helps to avoid "table of contents" CGI URLs like the ones on effbot.org.
- Quote arguments to python.exe (including python's path) to avoid problems when Python (or a script) is installed in a directory whose name contains spaces on Windows.
- Support full roundtrip translation of eggs to and from
bdist_wininstformat. Running
bdist_wininston a setuptools-based package wraps the egg in an .exe that will safely install it as an egg (i.e., with metadata and entry-point wrapper scripts), and
easy_installcan turn the .exe back into an
.eggfile or directory and install it as such.
- Fixed
- 0.6a8
- Update for changed SourceForge mirror format
- Fixed not installing dependencies for some packages fetched via Subversion
- Fixed dependency installation with
--always-copynot using the same dependency resolution procedure as other operations.
- Fixed not fully removing temporary directories on Windows, if a Subversion checkout left read-only files behind
- Fixed some problems building extensions when Pyrex was installed, especially with Python 2.4 and/or packages using SWIG.
- 0.6a7
- Fixed not being able to install Windows script wrappers using Python 2.3
- 0.6a6
- Added support for "traditional" PYTHONPATH-based non-root installation, and
also the convenient
virtual-python.pyscript, based on a contribution by Ian Bicking. The setuptools egg now contains a hacked
sitemodule that makes the PYTHONPATH-based approach work with .pth files, so that you can get the full EasyInstall feature set on such installations.
- Added
- Improved Windows
.exescript wrappers so that the script can have the same name as a module without confusing Python.
- Changed dependency processing so that it's breadth-first, allowing a depender's preferences to override those of a dependee, to prevent conflicts when a lower version is acceptable to the dependee, but not the depender. Also, ensure that currently installed/selected packages aren't given precedence over ones desired by a package being installed, which could cause conflict errors.
- Added support for "traditional" PYTHONPATH-based non-root installation, and also the convenient
- 0.6a3
- Improved error message when trying to use old ways of running
easy_install. Removed the ability to run via
python -mor by running
easy_installis the command to run on all supported platforms.
- Improved wrapper script generation and runtime initialization so that a VersionConflict doesn't occur if you later install a competing version of a needed package as the default version of that package.
- Fixed a problem parsing version numbers in
- Improved error message when trying to use old ways of running
- 0.6a2
- EasyInstall can now install "console_scripts" defined by packages that use
setuptoolsand define appropriate entry points. On Windows, console scripts get an
.exewrapper so you can just type their name. On other platforms, the scripts are installed without a file extension.
- Using
python -m easy_installor running
easy_install.pyis now DEPRECATED, since an
easy_installwrapper is now available on all platforms.
- EasyInstall can now install "console_scripts" defined by packages that use
- 0.6a1
- EasyInstall now does MD5 validation of downloads from PyPI, or from any link that has an "#md5=…" trailer with a 32-digit lowercase hex md5 digest.
- EasyInstall now handles symlinks in target directories by removing the link, rather than attempting to overwrite the link's destination. This makes it easier to set up an alternate Python "home" directory (as described above in the Non-Root Installation section).
- Added support for handling MacOS platform information in
.eggfilenames, based on a contribution by Kevin Dangoor. You may wish to delete and reinstall any eggs whose filename includes "darwin" and "Power_Macintosh", because the format for this platform information has changed so that minor OS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with a previous OS version to become obsolete.
- easy_install's dependency processing algorithms have changed. When using
--always-copy, it now ensures that dependencies are copied too. When not using
--always-copy, it tries to use a single resolution loop, rather than recursing.
- Fixed installing extra
.pyofiles for scripts with
- Added
--site-dirsoption to allow adding custom "site" directories. Made
easy-install.pthwork in platform-specific alternate site directories (e.g.
~/Library/Python/2.x/site-packageson Mac OS X).
- If you manually delete the current version of a package, the next run of
EasyInstall against the target directory will now remove the stray entry
from the
- EasyInstall now recognizes URLs with a
#egg=project_namefragment ID as pointing to the named project's source checkout. Such URLs have a lower match precedence than any other kind of distribution, so they'll only be used if they have a higher version number than any other available distribution, or if you use the
--editableoption. The
#eggfragment can contain a version if it's formatted as
#egg=proj-ver, where
projis the project name, and
veris the version number. You must use the format for these values that the
bdist_eggcommand uses; i.e., all non-alphanumeric runs must be condensed to single underscore characters.
- Added the
--editableoption; see Editing and Viewing Source Packages above for more info. Also, slightly changed the behavior of the
- Fixed the setup script sandbox facility not recognizing certain paths as valid on case-insensitive platforms.
- 0.5a12
- Fix
python -m easy_installnot working due to setuptools being installed as a zipfile. Update safety scanner to check for modules that might be used as
python -mscripts.
- Misc. fixes for win32.exe support, including changes to support Python 2.4's
- Fix
- 0.5a10
- Put the
easy_installmodule back in as a module, as it's needed for
python -mto run it!
- Allow
--find-links/-fto accept local directories or filenames as well as URLs.
- Put the
- 0.5a9
- EasyInstall now automatically detects when an "unmanaged" package or
module is going to be on
sys.pathahead of a package you're installing, thereby preventing the newer version from being imported. By default, it will abort installation to alert you of the problem, but there are also new options (
--ignore-conflicts-at-my-risk) available to change the default behavior. (Note: this new feature doesn't take effect for egg files that were built with older
setuptoolsversions, because they lack the new metadata file required to implement it.)
- The
easy_installdistutils command now uses
DistutilsErroras its base error type for errors that should just issue a message to stderr and exit the program without a traceback.
- EasyInstall can now be given a path to a directory containing a setup script, and it will attempt to build and install the package there.
- EasyInstall now performs a safety analysis on module contents to determine whether a package is likely to run in zipped form, and displays information about what modules may be doing introspection that would break when running as a zipfile.
- Added the
--always-unzip/-Zoption, to force unzipping of packages that would ordinarily be considered safe to unzip, and changed the meaning of
--zip-ok/-zto "always leave everything zipped".
- EasyInstall now automatically detects when an "unmanaged" package or module is going to be on
- 0.5a8
- There is now a separate documentation page for setuptools; revision history that's not specific to EasyInstall has been moved to that page.
- 0.5a5
- Made
easy_installa standard
setuptoolscommand, moving it from the
easy_installmodule to
setuptools.command.easy_install. Note that if you were importing or extending it, you must now change your imports accordingly.
easy_install.pyis still installed as a script, but not as a module.
- Made
- 0.5a4
- Added
--always-copy/-aoption to always copy needed packages to the installation directory, even if they're already present elsewhere on sys.path. (In previous versions, this was the default behavior, but now you must request it.)
- Added
--upgrade/-Uoption to force checking PyPI for latest available version(s) of all packages requested by name and version, even if a matching version is available locally.
- Added automatic installation of dependencies declared by a distribution
being installed. These dependencies must be listed in the distribution's
EGG-INFOdirectory, so the distribution has to have declared its dependencies by using setuptools. If a package has requirements it didn't declare, you'll still have to deal with them yourself. (E.g., by asking EasyInstall to find and install them.)
- Added the
--recordoption to
easy_installfor the benefit of tools that run
setup.py install --record=filenameon behalf of another packaging system.)
- Added
- 0.5a3
- Fixed not setting script permissions to allow execution.
- Improved sandboxing so that setup scripts that want a temporary directory (e.g. pychecker) can still run in the sandbox.
- 0.5a2
- Fix stupid stupid refactoring-at-the-last-minute typos. :(
- 0.5a1
- Added support for converting
.win32.exeinstallers to eggs on the fly. EasyInstall will now recognize such files by name and install them.
- Fixed a problem with picking the "best" version to install (versions were being sorted as strings, rather than as parsed values)
- Added support for converting
- 0.4a4
- Added support for the distutils "verbose/quiet" and "dry-run" options, as well as the "optimize" flag.
- Support downloading packages that were uploaded to PyPI (by scanning all links on package pages, not just the homepage/download links).
- 0.4a3
- Add progress messages to the search/download process so that you can tell what URLs it's reading to find download links. (Hopefully, this will help people report out-of-date and broken links to package authors, and to tell when they've asked for a package that doesn't exist.)
- 0.4a2
- Added support for installing scripts
- Added support for setting options via distutils configuration files, and using distutils' default options as a basis for EasyInstall's defaults.
- Renamed
--find-links/-fto free up
-sfor the script installation directory option.
- Use
urllib2instead of
urllib, to allow use of
https:URLs if Python includes SSL support.
- 0.4a1
- Added
--index-urloptions, to scan download pages and search PyPI for needed packages.
- Added
- 0.3a4
- Restrict
--build-directory=DIR/-b DIRoption to only be used with single URL installs, to avoid running the wrong setup.py.
- Restrict
- 0.3a3
- Added
--build-directory=DIR/-b DIRoption.
- Added "installation report" that explains how to use 'require()' when doing a multiversion install or alternate installation directory.
- Added SourceForge mirror auto-select (Contributed by Ian Bicking)
- Added "sandboxing" that stops a setup script from running if it attempts to write to the filesystem outside of the build area
- Added more workarounds for packages with quirky
- Added
- 0.3a2
- Added subversion download support for
svn+URLs, as well as automatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)
- Misc. bug fixes
- Added subversion download support for
- 0.3a1
- Initial release.
Future Plans¶
- Additional utilities to list/remove/verify packages
- Signature checking? SSL? Ability to suppress PyPI search?
- Display byte progress meter when downloading distributions and long pages?
- Redirect stdout/stderr to log during run_setup?


text:
Benzion Netanyahu
Feiglin, Netanyahu Say Kaddish TogetherMoshe Feiglin came to comfort Binyamin Netanyahu and prayed together in memory of Netanyahu's father.
'Prof. Netanyahu Should Have Been Awarded the Israel Prize'Yossi Achimeir of the Jabotinsky Center says that the late renowned scholar should have received the Israel Prize. Why didn't he?
Pictures: Prof. Benzion Netanyahu Laid to RestThe father of Prime Minister Binyamin Netanyahu was laid to rest in Jerusalem on Monday. He was 102.
Benzion Netanyahu Eulogized by Left and RightMK Rivlin: "He never compromised." President Peres: "He was a great historian and a great Jew."

subset: commoncrawl


text:
coffee time is a little like the chicken and the egg, which came first? i most certainly need that cup of java in the morning and another mid-afternoon, i make the time to brew and enjoy my coffee. i am particular about the cup, i have many and depending on my mood i do actually care which cup i use. most importantly though is the bonus time a coffee break gets me, time that i can talk to kath by email or text, time to read a few lines or visit my on line friends, time to make a list or plan dinner. so what comes first, the coffee or the time?
one of my 2014 goals is to become aware of how i use my time, how do i prioritize, schedule and of course, waste my time. the soeurs have stepped into the world of the day planners, journal du jour if you must. we have a plan that allows us to efficiently use our planners and yet with all the gadgets and skills we have, why is that we still can't seem to get everything done. i am starting to think that the time management i have learned is a waste of time for me.
my strategy for this week is to keep detailed notes of how i use my time. i realize that i can't possibly manage my time if i don't actually know what time i have. i want to identify the important but not urgent. this week i hope to learn the time of day i work best and how to say no.
i have a new focus for 2014, it's me.


text:
About the Alumni Network || View your Alumni Profile || Alumni Network Help
In loving memory of Gill Jacot Guillarmod, Senior Project Manager and Liaison Officer of the Centre for Human Rights from 1 May 2001 to 15 January 2010, in deep appreciation for her role to the academic and other programmes of the Centre, and in recognition of her humanity and humour, which left a profound impression on everyone whose lives touched hers, the Centre for Human Rights in 2010 established the Gill Jacot Guillarmod Scholarship.
The deadline for applications for the Gill Jacot Guillarmod Scholarship is 30 October each year.
The selection panel, consisting of the Director of the Centre, the Assistant Director of the Centre, the LLM Programme Manager, the Centre's Operations Manager and Edouard Jacot Guillarmod, or his representative, will meet annually to decide on the award of the Scholarship.


text:
On Feb. 1, 1587, England`s Queen Elizabeth I signed a warrant for the execution of Mary, Queen of Scots.
In 1859, Victor Herbert, conductor and composer of light operas, was born in Dublin, Ireland.
In 1861, Texas voted to secede from the Union.
In 1893, Thomas Edison completed work on the world`s first motion picture studio, in West Orange, N.J. It cost less than $650.


text:
Guest Feedback - Lam Family
We are extremely proud to share feedback received from one of our younger guests. Alarisse Lam, from San Diego, travelled to Southern Africa with her older brother, parents and grand parents in June.
Traveling through Southern Africa Travel to Africa was definitely one of the best experiences of my life so far. It all began when we landed in Johannesburg, where there was a person ready to pick us up bearing pre-arranged packages for us that contained all of the information about our trip that we needed to know. They were very friendly and eager to help, and even shared some facts and insights about the city on our drive to the hotel. After a day of settling in, they were back to pick us up the next morning for our flight to Kruger National Park.
We stayed in Tinga Private Game Lodge. Just the experience of the lodge alone was amazing. The exceptionally friendly staff were awaiting our arrival, and were ready to greet us with hand towels, drinks, and refreshments. We sat down overlooking the river as they took care of everything for us. We were lucky enough to be there at the perfect time, as we were the only people at the lodge at the time. It was like having a personal staff 24/7!
Everything about the lodge is beautiful from the view (a lot of times we saw elephants and other animals just across the river from us!), the suites (private hot tub and deck, the shower alone was equipped with bay windows of the river, and heated floors throughout--need I say more?), the pool, the main area, and the entire section of the park that is private to the lodge. We would often times see members of the antelope family just wandering around the lodge, too! The safaris were great, and our trackers seemed to know everything about every animal. Afternoon safaris also had tea time, where we stopped for a bit for refreshments as we watched the sun set. After the night game drive, we would return to the hotel where the staff awaited us with warm towels and dinner.
The food at the lodge was phenomenal. I don't remember having a single meal that didn't satisfy me, and more. It was almost like the kitchen was trying to fatten us up to feed to the lions! We were definitely reluctant to leave, as we embarked for Cape Town.
Our experience in Cape Town was, once again, exceptional. We had a private tour guide who was there for us our entire stay, and was happy to work with us when we wanted to change our schedule around, no matter how last minute. His knowledge about the city was incredible, as he explained to us all about its history to present times--and all the bits in between--during our tour of the beautiful place.
Another aspect of Cape Town, which I would highly recommend to everyone, was the great white shark diving. The program Southern Africa Travel scheduled us with was great: they picked us up early in the morning and brought us out to the site. There, we ate breakfast and were debriefed before we all loaded up onto the boat. The ride out was very quick, and before we knew it we were in the middle of swarming sharks as we climbed into our wetsuits. I will never forget the sight of 10 foot great whites close enough for you to touch. No words can describe it. The cage held 5 people at a time, so we rotated through groups as the time went on, but each person got plenty of time in the water. In total, we saw 11 sharks! Everything about it was awesome and this adventure should be on everyone's bucket list.
After Cape Town we went to Victoria Falls. The Falls are truly beautiful. We took walking tours on both the Zambian side as well as the Zimbabwean side. We also went on a sunset river cruise Southern Africa Travel had set us up with, and helicopter tours in addition to an ultralight tour. It was really great we were able to see it from all these different angles, enriching the experience overall.
In all, Southern Africa Travel took care of us very well, setting up everything seamlessly so that we had nothing to worry about. From drivers to tours, to even someone waiting for us after a flight to walk us to the next terminal for our next flight, they had everything ready perfectly. I would highly recommend anyone to go with Southern Africa Travel for their next trip to Africa. By Alarisse Lam


text:
Lisinopril was recalled following a March 2015 inspection that determined that more extensive research into complaints about the drug's various dosages was needed before the drug was safe to administer, according to GoodRX. The recalled lots first appeared in pharmacies in July 2012.Continue Reading
There are two ways by which a drug manufacturer can initiate a recall of one of their products: Either the manufacturer voluntarily performs the recall itself, or the Food and Drug Administration requires them to, according to GoodRX. In the case of Lisinopril, Wockhardt, the drug's manufacturer, voluntarily decided that more research is needed before the product is ready to hit the market.
Several classes of recall exist, notes GoodRX. The Lisinopril recall is a class II recall, which means that doctors do not necessarily need to notify their patients, since it may not have an effect on their health. Patients who are concerned about their prescriptions being affected are encouraged to contact their doctors or pharmacists to learn more.
Wockhardt's recall of Lisinopril affects three dosage strengths of the drug: 2.5-milligram tablets, 10-milligram tablets and 20-milligram tablets, according to GoodRX. Specific lots affected include DM10573, DM13052, DM13053 and DN10485. The 2.5-milligram dosage lot has expired, as of the recall date.Learn more about Medications & Vitamins


text:
News Service
For the media
For the campus
News Service:
Annette Hacker, director,
Office: (515) 294-4777
Tom Maze, Center for Transportation Research and Education, (515) 294-9523, firstname.lastname@example.com
David Plazak, Center for Transportation Research and Education, (515) 296-0814, firstname.lastname@example.com
Mike Krapfl, News Service, (515) 294-4917, email@example.com
Iowa State-based transportation center to focus on safety
AMES, Iowa -- Iowa State University will continue to be home to a federally supported University Transportation Center.
The U.S. Department of Transportation recently announced that a research consortium of Iowa State, the University of Iowa and the University of Northern Iowa will receive a three-year, $3 million grant for a transportation research center. The grant requires the universities to come up with matching funding so the Midwest Transportation Consortium will support at least $6 million in advanced research, education and outreach activities through 2009.
Iowa State researchers, who have won federal transportation centers from 1988-1995 and 1999 to the present, will lead the consortium. The consortium will focus on improving safety management and analysis technologies to help transportation planners and engineers reduce the number of highway crashes.
"We will advance the state of the art and create new knowledge regarding transportation safety, and manage and create new transportation professionals who will promote a safety culture when they enter the workforce," says the consortium's proposal for a transportation center.
Tom Maze, the director of the consortium and an Iowa State professor of civil, construction and environmental engineering, said the transportation center will focus on the strengths of the three universities. Iowa State will provide expertise in crash analysis tools and techniques, the University of Iowa will provide expertise in the human factors of transportation safety and the University of Northern Iowa will provide expertise in geographic and spatial data.
The consortium's goal is to use that expertise to change how departments of transportation plan road projects and manage existing roadways. Maze said departments do a fine job making plans based on forecasts of traffic congestion and the expected future condition of roads and bridges. But they have more difficulty factoring safety into project management and development decisions.
"It's not that they're not looking at safety," Maze said. "It's that there aren't any tools."
The consortium plans to develop safety management systems that forecast safety performance as traffic volumes grow and road conditions and capacities change over time, according to the consortium's proposal.
Those systems could change how roads are built, how intersections are constructed, how land is developed along roadways and they could reduce how many mistakes drivers make, said David Plazak, the consortium's education coordinator and an Iowa State adjunct assistant professor of community and regional planning.
And that could mean a lot for Iowa and the United States.
"Improving transportation safety is a vexing and important challenge," says the consortium's proposal. "Traffic crashes result in an economic loss of more than $230 billion nationally per year. Reducing risks in transportation translates to fewer fatalities and life-changing injuries and less lost productivity."
Quick look
Iowa State University, the University of Iowa and the University of Northern Iowa are working together to establish a transportation center supported by $3 million from the U.S. Department of Transportation. The center will support research aimed at developing tools so departments of transportation can consider safety when planning and managing roadways.
"It's not that they're not looking at safety. It's that there aren't any tools."
Tom Maze, the director of the Midwest Transportation Consortium and an Iowa State professor of civil, construction and environmental engineering


text:
0 Members and 2 Guests are viewing this topic.
Where's the chart for the Dinner vs. Lunch line?
Funny thing on this one. One of the companies drilling in the Fayetteville Shale had the Drilling Manager in Houston, obviously the rig was in Arkansas (about Ozark in this particular case). They're talking, need to switch out the bit, and the Company Man says, "Yeah, we'll shut 'er down at dinner time." Ok, everybody at home base is ready for a 6pm-ish downtime, which would be roughly shift change. 12 noon, boom, it shuts down. The Drilling Manager in Houston (originally from Calgary) goes berzerk and calls the Company Man wondering WTF and said, "I thought you said dinner time?""I did""Huh? Its only noon. Dinner is in the evening!""No, that's supper, dumbass." and then hangs up the phone. I was sitting on the sidelines in the same room as the Drilling Manager just watching unfold and finally started laughing my ass off. It was hilarious.
Southwestern Energy?
More evidence that Mizzou is a poor fit, culturally, in the SEC. Now, pass me a coke.https://tastyresearch.files.wordpress.com/2006/10/popvssodamap.png
Things like this are fascinating to me. Now I want to know what causes the little pockets you see in random places? And what all of the "Others" are? I know in some places that call it "tonic"...
My wish is that someday, the 2 LOL threads can be merged when Mizz coach gets his second DWI and they need a fine Christian man.
I really hope you're not the person I think you are.
My wish is that someday, the 2 LOL threads can be merged when Mizz coach gets his second DWI and they need a fine Christian man.
Perhaps the states will follow. Mizzoussippi?
Behold Mizzemphissippi.
I am not claiming I am right, I am saying I don't get it.
Breakfast, lunch, then dinner.Supper is churchspeak.
Ya'll ever tried to suck a dick for 20 minutes? It isn't easy.
NM goes with the "soda pop" combo (as does Lake of the Woods, Minn., apparently.)
Breakfast, lunch, then dinner.Supper is churchspeak.EDIT: and for dogs too.
Of course it's supper to you Muzzy, you're a Yankee now.
Ouch. Just saw where LolMizz lost a 17 pt lead to the Jaycawks. Is DGB a DE yet?


text:
By submitting your reservation, you agree to be bound by the provisions of these Terms of Service. Just Maui Weddings reserves the right to make changes to these Terms of Service without notice; any such changes will apply prospectively only. Unless Just Maui Weddings agrees otherwise in writing, these Terms of Service constitute the entire agreement between you and Just Maui Weddings concerning the subject matter covered here.
JMW= Just Maui Weddings
You shall pay Just Maui Weddings a minimum reservation deposit of $300 (Some packages require larger non-refundable deposits, based upon the amount of services ordered) at the time of your reservation submission. Just Maui Weddings will not schedule any other weddings for the same time and date as you reserved. Therefore, any Deposits are non-refundable. If your Wedding is for the following Year a minimum non refundable retainer of 50% is required. If your booking is within 45 days or less of your wedding date, then the full amount is due now. Any payments made in part or in full are non refundable.
You shall also pay the entire amount owed for the wedding services you request in your reservation and in any subsequent communications with Just Maui Weddings (including, but not limited to, add-ons to a wedding package), minus the Deposit (the "Package Price"), no later than 45 days before your reserved wedding date.
Beach Wedding policies: The county of Maui does NOT allow for beach location weddings with out a permit. We will obtain this for you on your behalf. Items such as chairs, arches or similar type of structures are not allowed. If you are being married on a beach, a Beach Wedding Permit fee of $50- $150 depending on the size of your party will be added as required by the Department Of Land and Natural Resources. Go to reservation page.
Wedding Duration and Permits
The wedding ceremony's duration will be between 20-45 minutes, as confirmed by email from Just Maui Weddings. The duration may be subsequently changed with Just Maui Wedding's written approval. You understand that any applicable beach use permit that we obtain for your wedding is issued for a specific 2-hour time-frame, which cannot be exceeded under State law. Therefore, Just Maui Weddings is not obligated to perform any services for you outside the time frame indicated on such beach use permit. Go to reservation page.
Wedding Cancellations
You may cancel your wedding only by written notice (the "Cancellation Notice") sent to email us. If you send a Cancellation Notice 60 or more calendar days before your reserved wedding date, then you will not be responsible to pay the Package Price. If you send a Cancellation Notice fewer than 60 calendar days before your reserved wedding date, then you will still be responsible to pay the Package Price, which will become due immediately. No-shows on the date of the reserved wedding date are treated under the same terms as cancellations.
Just Maui Weddings will make a reasonable effort to avoid cancelling a wedding due to inclement weather, acts of God or any other reason outside its control; but if its effort fails, Just Maui Weddings will not bear any liability for its resulting cancellation of the wedding; and you will not be entitled to a refund. Instead, you will be entitled rescheduling your wedding for a date that is mutually agreeable to you and Just Maui Weddings and that is within 12 months of the originally reserved date. Go to reservation page.
Rescheduling Weddings
You may request rescheduling the date or time of your wedding only by written notice (the "Rescheduling Notice") sent to email us. Just Maui Weddings intends to accommodate any Rescheduling Notice, but rescheduling a wedding for your desired date may not always be possible based on Just Maui Weddings' bookings calendar. Therefore, Just Maui Weddings reserves the right to accept or reject a Rescheduling Notice in its sole discretion.
If you send a Rescheduling Notice fewer than 60 calendar days before your reserved wedding date, and it is accepted, you shall pay Just Maui Weddings a rescheduling fee of $200 no later than 14 days before your originally reserved wedding date (the "Rescheduling Fee"); all of your other payment obligations and deadlines will be unaffected by the rescheduled wedding date. If you send a Rescheduling Notice 60 or more calendar days before your reserved wedding date, and it is accepted, you will not have to pay a Rescheduling Fee only for the first such request; all subsequent requests are subject to the Rescheduling Fee. Just Maui Weddings is entitled to charge the Rescheduling Fee to any credit or debit card you have at any time provided to Just Maui Weddings. Go to reservation page.
Wedding Credit
Other than Deposits and Rescheduling Fees, any payments you make toward the Package Price of a wedding that you cancel or reschedule, will be credited toward a new booking by you for a wedding to occur at a date that is mutually agreeable to you and Just Maui Weddings and that is within 12 months of the originally reserved date.
Refund Policy
Planner hereby reserves and retains the right to cancel any and all of the above Services with or without cause by providing written notice to Client. In the event Planner elects to terminate this Agreement, half of the Retainer Deposit will be refunded to Client within thirty (30) days of notice of termination.
Your Planner
If Planner is unable to attend events, or complete the contract due to illness, tragedy, "Acts of God" or "Force Majeure", Planner will make commercially reasonable efforts to provide a replacement with capabilities and experience to finish the tasks. Depending on the services you choose for the day of your event, either an onsite or our company photographer/minister will be there guiding you through your ceremony and or your reception every step of the way. (Hibiscus Package excluded) Go to reservation page.
Disputes and Interpretation
By booking your wedding or by using our website, you agree that the laws of the State of Hawaii, without regard to principles of conflict of laws of any state or jurisdiction, will govern these Terms and any dispute of any sort that might arise between you and JMW or any of our affiliates. With respect to any disputes or claims not subject to arbitration, you agree not to commence or prosecute any action in connection therewith other than in the state and federal courts of Hawaii, and you hereby consent to, and waive all defenses of lack of personal jurisdiction and forum non conveniens with respect to, venue and jurisdiction in the state and federal courts of Hawaii.
I / WE, (wedding couple), have read and understand and fully agree with this contract. I / WE fully understand what is and is not included in this wedding contract and that this Agreement supersedes all other agreements, written or oral, between the parties as to the subject matter hereof. I / WE also understand that the full amount, including taxes, is due 45 days prior to our wedding date. By submission of this form, we agree to the terms and conditions above. - Mahalo! Go to reservation page.


text:
Zvezda 1/35 Mercedes Maultier L4500R 4.5ton Truck
Brand: Zvezda
Model Number: 3603
Scale: 1/35
- Description
- Reviews (0)
- Delivery
The Zvezda Mercedes Maultier L4500R 4.5ton Truck in 1/35 scale from the plastic truck model range accurately recreates the real life German half-track cargo truck used during World War II.
This plastic truck kit requires paint and glue to complete.
At the time of beginning of Barbarossa operation the most part of Wehrmacht's transport vehicles was from lorries, produced as per the Program of expedited production of lorries (Schnell Programm). They had sufficient passability for war in Western Europe with its extensive road network. But in the inclement climate of Russia and absence of roads with hard surface thousands of vehicles became stuck in mud and snow and were abandoned during the first war winter. Even the all-wheel drive Mercedes-Benz L4500A was not able to carry loads due to the lack of good roads in Russia.
That is why in 1943 the half-track off-road vehicle Mercedes-Benz L4500R Maultier was created on the base of L4500A. During that caterpillar mover from the light tank Pz.Kpfw. II was mounted instead of rear axle. Dead weight of vehicle was increased, load carrying capacity was increased up to 4.5 tones, maximal speed was reduced to 36 km/h, and fuel consumption was up to 200 litres per 100 km. But now Maultier was able to drive on any mud. L4500R was producing till 1948 and 1486 such vehicles had been manufactured.
Manufacturer: Zvezda
Model: 3603 Mercedes Maultier L4500R 4.5ton Truck
Scale: 1/35
Write a review
Wonderland Models deliver throughout the UK and Overseas. We endeavour to despatch orders immediately but certainly within 48 hours of receipt. Orders will only be dispatched once payment has been received.
UK Delivery:
Order value (including postage) up to £70: First Class Royal Mail £3.95 (Delivery Within 1-5 Days)
Order value (including postage) over £70: Interlink Express £6.95 (Courier Delivery Next Working Day).
Please be sure to give us your mobile phone number when ordering as Interlink Express offer an email/text message option to enable you to receive notification of despatch and estimated delivery time. The express service requires a signature on delivery and must be ordered before 2pm for next working day delivery. The courier does not deliver on a weekend or bank holidays.
Express delivery is two days to some postcodes, and these incur a £6 surcharge. A list of applicable postcodes can be seen here.
Overseas Delivery:
European deliveries are sent by Interlink Express/DPD. For details of delivery costs and times by country please click here.
Delivery to Australia, New Zealand, Canada, Japan and the USA is by Royal Mail or FedEx courier and is calculated on an order by order basis based on weight and size. We will contact you with the shipping costs on receipt of the order.
For full shipping details please see the delivery section of our website here.


text:
Lightning strikes kill 4 in Odisha, toll up to 56 in four days
While 41 people had died due to lightning strike in various places on July 30, as many as 11 deaths were reported on July 31, officials said.india Updated: Aug 03, 2016 11:51 IST
With the death of four more persons, the toll in such strikes in Odisha reached to 56 within a span of four days, officials said.
One person died due to lightning strike each in the districts of Bolangir, Jagatsinghour, Khurda and Cuttack, officials in the special relief commissioner's office said.
While a youth of Deuliapatna village in Khurda district was killed when lightning struck him this afternoon, a person of Uttarabanki Gholapur village in Athagarh block of Cuttack district died after taking shelter under a tree during rain and thundershower.
Besides, a youth of Balia Gopinathpur village in Jagatsinghpur district and an old man of Roda village of in Bolangir district were killed in lightning strike.
While 41 people had died due to lightning strike in various places on July 30, as many as 11 deaths were reported on July 31, officials said.
While the maximum number of eight deaths were reported from Balasore district, there were seven casualties each in Bhadrak, Mayurbhanj and Khurda district, six in Cuttack, four each in Jajpur and Dhenkanal, three in Nayagarh, two each in Keonjhar and Nabarangpur, and one each in Puri, Deogarh, Kendrapara, Jharsuguda, Bolangir and Jagatsinghpur districts.
An amount of Rs 4 lakh per deceased will be paid by the Government towards ex-gratia, the SRC said in a statement.
First Published: Aug 03, 2016 11:51 IST