Python easy.install with Chocolatey

In my company I’ve basically completely moved to the Windows platform. My company is the typical Microsoft shop and since I’m doing more management stuff with slides and “official” documents Linux wasn’t simply an option any more. My company deploys a method to completely remotely install a PC/Laptop with all the required standard set of software. However there are those very nice to have programs like Notepad++, CCleaner or ConEmu, which make life under Windows bearable or if you want to add a programming language like Python or Ruby.

Anyway, for some time I’ve been using Ninite to install and keep my selection of add-ons up to date. Until I learned about Chocolatey from Scott Hanselmans Dev Tool List. As he says: once you start using it, you’ll be hooked. Here are some additional notes from him.

Worked without any major problems for me until I wanted to install Pip after already having install the Python programming language itself. Pip has a dependency on Easy.install, which is installed in the process. However the installation of Easy.install fails for me with this error message:

> cinst easy.install
Chocolatey (v0.9.8.27) is installing 'easy.install' and dependencies. By installing you accept the license for 'easy.install' and each dependency you are installing.

easy.install v0.6.11.4
Setting PYTHONHOME environment variable to 'C:\tools\python2'
PS: PYTHONHOME variable is not required to Python works, but it is a good practice to have it.
Using python home at 'C:\tools\python2'
Installing easy_install for Python(2.7.8)...
Installing setuptools from http://pypi.python.org/pypi/setuptools ...
Using this proxyserver: 172.25.xx.yyy:zz
Downloading easy.install/setuptools 32 bit
  from 'http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe'
Using this proxyserver: 172.25.xx.yyy:zz
Write-Error : easy.install/setuptools did not finish successfully. Boo to the chocolatey gods!
-----------------------
[ERROR] Exception calling ".ctor" with "2" argument(s): "Could not find a part of the path 'C:\TEMP\chocolatey\easy.ins tall\setuptools\easy.install\setuptoolsInstall.exe'."
-----------------------
At C:\ProgramData\chocolatey\chocolateyinstall\helpers\functions\Write-ChocolateyFailure.ps1:30 char:3
+   Write-Error $errorMessage
+   ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Error

Write-Error : easy.install did not finish successfully. Boo to the chocolatey gods!
-----------------------
[ERROR] Exception calling ".ctor" with "2" argument(s): "Could not find a part of the path 'C:\TEMP\chocolatey\easy.ins tall\setuptools\easy.install\setuptoolsInstall.exe'."
-----------------------
At C:\ProgramData\chocolatey\chocolateyinstall\helpers\functions\Write-ChocolateyFailure.ps1:30 char:3
+   Write-Error $errorMessage
+   ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Error

Write-Error : Package 'easy.install v0.6.11.4' did not install successfully: Exception calling ".ctor" with "2" argumen t(s): "Could not find a part of the path 'C:\TEMP\chocolatey\easy.install\setuptools\easy.install\setuptoolsInstall.exe '."
At C:\ProgramData\chocolatey\chocolateyinstall\functions\Chocolatey-NuGet.ps1:90 char:17
+                 Write-Error "Package `'$installedPackageName v$installedPackageV ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Error

Finished installing 'easy.install' and dependencies - if errors not shown in console, none detected. Check log for error

Apparently there is something wrong with the path setup for download and installing the setuptoolsInstall.exe executable.

I circumvented the problem by executing the following steps. I installed wget via Chocolatey, simply for the fact, that I’m familiar with it. You’ll be able to achieve the same results by using other Windows native tools, you are familiar with.

 > cinst wget

Then I changed to the temporary installation location used by Chocolatey for easy.install and created another easy.install directory and changed into it.

> cd c:\temp\chocolatey\easy.install\setuptools
> mkdir easy.install
> cd easy.install

Your working directory should now be

C:\temp\chocolatey\easy.install\setuptools\easy.install

Notice the 2 easy.install directory components. Now download the setuptools package via wget into this directory under the name setuptoolsInstall.exe. Depending on your location within the larger network, you might additional need to configure the proxy server either in the environment or via additional command line options.

> wget --no-check-certificate -O setuptoolsInstall.exe http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe
> dir

Directory: C:\temp\chocolatey\easy.install\setuptools\easy.install

Mode  LastWriteTime    Length Name
----  -------------    ------ ----
-a--- 27.08.2014 09:16 227956 setuptoolsInstall.exe

After these steps the installation of easy.install via Chocolatey should succeed normally.

> cinst easy.install

I did all the above steps within a PowerShell window. With cmd.exe you mileage may vary.