easy_install.txt 74 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625
  1. ============
  2. Easy Install
  3. ============
  4. Easy Install is a python module (``easy_install``) bundled with ``setuptools``
  5. that lets you automatically download, build, install, and manage Python
  6. packages.
  7. Please share your experiences with us! If you encounter difficulty installing
  8. a package, please contact us via the `distutils mailing list
  9. <http://mail.python.org/pipermail/distutils-sig/>`_. (Note: please DO NOT send
  10. private email directly to the author of setuptools; it will be discarded. The
  11. mailing list is a searchable archive of previously-asked and answered
  12. questions; you should begin your research there before reporting something as a
  13. bug -- and then do so via list discussion first.)
  14. (Also, if you'd like to learn about how you can use ``setuptools`` to make your
  15. own packages work better with EasyInstall, or provide EasyInstall-like features
  16. without requiring your users to use EasyInstall directly, you'll probably want
  17. to check out the full `setuptools`_ documentation as well.)
  18. .. contents:: **Table of Contents**
  19. Using "Easy Install"
  20. ====================
  21. .. _installation instructions:
  22. Installing "Easy Install"
  23. -------------------------
  24. Please see the `setuptools PyPI page <https://pypi.python.org/pypi/setuptools>`_
  25. for download links and basic installation instructions for each of the
  26. supported platforms.
  27. You will need at least Python 2.6. An ``easy_install`` script will be
  28. installed in the normal location for Python scripts on your platform.
  29. Note that the instructions on the setuptools PyPI page assume that you are
  30. are installing to Python's primary ``site-packages`` directory. If this is
  31. not the case, you should consult the section below on `Custom Installation
  32. Locations`_ before installing. (And, on Windows, you should not use the
  33. ``.exe`` installer when installing to an alternate location.)
  34. Note that ``easy_install`` normally works by downloading files from the
  35. internet. If you are behind an NTLM-based firewall that prevents Python
  36. programs from accessing the net directly, you may wish to first install and use
  37. the `APS proxy server <http://ntlmaps.sf.net/>`_, which lets you get past such
  38. firewalls in the same way that your web browser(s) do.
  39. (Alternately, if you do not wish easy_install to actually download anything, you
  40. can restrict it from doing so with the ``--allow-hosts`` option; see the
  41. sections on `restricting downloads with --allow-hosts`_ and `command-line
  42. options`_ for more details.)
  43. Troubleshooting
  44. ~~~~~~~~~~~~~~~
  45. If EasyInstall/setuptools appears to install correctly, and you can run the
  46. ``easy_install`` command but it fails with an ``ImportError``, the most likely
  47. cause is that you installed to a location other than ``site-packages``,
  48. without taking any of the steps described in the `Custom Installation
  49. Locations`_ section below. Please see that section and follow the steps to
  50. make sure that your custom location will work correctly. Then re-install.
  51. Similarly, if you can run ``easy_install``, and it appears to be installing
  52. packages, but then you can't import them, the most likely issue is that you
  53. installed EasyInstall correctly but are using it to install packages to a
  54. non-standard location that hasn't been properly prepared. Again, see the
  55. section on `Custom Installation Locations`_ for more details.
  56. Windows Notes
  57. ~~~~~~~~~~~~~
  58. Installing setuptools will provide an ``easy_install`` command according to
  59. the techniques described in `Executables and Launchers`_. If the
  60. ``easy_install`` command is not available after installation, that section
  61. provides details on how to configure Windows to make the commands available.
  62. Downloading and Installing a Package
  63. ------------------------------------
  64. For basic use of ``easy_install``, you need only supply the filename or URL of
  65. a source distribution or .egg file (`Python Egg`__).
  66. __ http://peak.telecommunity.com/DevCenter/PythonEggs
  67. **Example 1**. Install a package by name, searching PyPI for the latest
  68. version, and automatically downloading, building, and installing it::
  69. easy_install SQLObject
  70. **Example 2**. Install or upgrade a package by name and version by finding
  71. links on a given "download page"::
  72. easy_install -f http://pythonpaste.org/package_index.html SQLObject
  73. **Example 3**. Download a source distribution from a specified URL,
  74. automatically building and installing it::
  75. easy_install http://example.com/path/to/MyPackage-1.2.3.tgz
  76. **Example 4**. Install an already-downloaded .egg file::
  77. easy_install /my_downloads/OtherPackage-3.2.1-py2.3.egg
  78. **Example 5**. Upgrade an already-installed package to the latest version
  79. listed on PyPI::
  80. easy_install --upgrade PyProtocols
  81. **Example 6**. Install a source distribution that's already downloaded and
  82. extracted in the current directory (New in 0.5a9)::
  83. easy_install .
  84. **Example 7**. (New in 0.6a1) Find a source distribution or Subversion
  85. checkout URL for a package, and extract it or check it out to
  86. ``~/projects/sqlobject`` (the name will always be in all-lowercase), where it
  87. can be examined or edited. (The package will not be installed, but it can
  88. easily be installed with ``easy_install ~/projects/sqlobject``. See `Editing
  89. and Viewing Source Packages`_ below for more info.)::
  90. easy_install --editable --build-directory ~/projects SQLObject
  91. **Example 7**. (New in 0.6.11) Install a distribution within your home dir::
  92. easy_install --user SQLAlchemy
  93. Easy Install accepts URLs, filenames, PyPI package names (i.e., ``distutils``
  94. "distribution" names), and package+version specifiers. In each case, it will
  95. attempt to locate the latest available version that meets your criteria.
  96. When downloading or processing downloaded files, Easy Install recognizes
  97. distutils source distribution files with extensions of .tgz, .tar, .tar.gz,
  98. .tar.bz2, or .zip. And of course it handles already-built .egg
  99. distributions as well as ``.win32.exe`` installers built using distutils.
  100. By default, packages are installed to the running Python installation's
  101. ``site-packages`` directory, unless you provide the ``-d`` or ``--install-dir``
  102. option to specify an alternative directory, or specify an alternate location
  103. using distutils configuration files. (See `Configuration Files`_, below.)
  104. By default, any scripts included with the package are installed to the running
  105. Python installation's standard script installation location. However, if you
  106. specify an installation directory via the command line or a config file, then
  107. the default directory for installing scripts will be the same as the package
  108. installation directory, to ensure that the script will have access to the
  109. installed package. You can override this using the ``-s`` or ``--script-dir``
  110. option.
  111. Installed packages are added to an ``easy-install.pth`` file in the install
  112. directory, so that Python will always use the most-recently-installed version
  113. of the package. If you would like to be able to select which version to use at
  114. runtime, you should use the ``-m`` or ``--multi-version`` option.
  115. Upgrading a Package
  116. -------------------
  117. You don't need to do anything special to upgrade a package: just install the
  118. new version, either by requesting a specific version, e.g.::
  119. easy_install "SomePackage==2.0"
  120. a version greater than the one you have now::
  121. easy_install "SomePackage>2.0"
  122. using the upgrade flag, to find the latest available version on PyPI::
  123. easy_install --upgrade SomePackage
  124. or by using a download page, direct download URL, or package filename::
  125. easy_install -f http://example.com/downloads ExamplePackage
  126. easy_install http://example.com/downloads/ExamplePackage-2.0-py2.4.egg
  127. easy_install my_downloads/ExamplePackage-2.0.tgz
  128. If you're using ``-m`` or ``--multi-version`` , using the ``require()``
  129. function at runtime automatically selects the newest installed version of a
  130. package that meets your version criteria. So, installing a newer version is
  131. the only step needed to upgrade such packages.
  132. If you're installing to a directory on PYTHONPATH, or a configured "site"
  133. directory (and not using ``-m``), installing a package automatically replaces
  134. any previous version in the ``easy-install.pth`` file, so that Python will
  135. import the most-recently installed version by default. So, again, installing
  136. the newer version is the only upgrade step needed.
  137. If you haven't suppressed script installation (using ``--exclude-scripts`` or
  138. ``-x``), then the upgraded version's scripts will be installed, and they will
  139. be automatically patched to ``require()`` the corresponding version of the
  140. package, so that you can use them even if they are installed in multi-version
  141. mode.
  142. ``easy_install`` never actually deletes packages (unless you're installing a
  143. package with the same name and version number as an existing package), so if
  144. you want to get rid of older versions of a package, please see `Uninstalling
  145. Packages`_, below.
  146. Changing the Active Version
  147. ---------------------------
  148. If you've upgraded a package, but need to revert to a previously-installed
  149. version, you can do so like this::
  150. easy_install PackageName==1.2.3
  151. Where ``1.2.3`` is replaced by the exact version number you wish to switch to.
  152. If a package matching the requested name and version is not already installed
  153. in a directory on ``sys.path``, it will be located via PyPI and installed.
  154. If you'd like to switch to the latest installed version of ``PackageName``, you
  155. can do so like this::
  156. easy_install PackageName
  157. This will activate the latest installed version. (Note: if you have set any
  158. ``find_links`` via distutils configuration files, those download pages will be
  159. checked for the latest available version of the package, and it will be
  160. downloaded and installed if it is newer than your current version.)
  161. Note that changing the active version of a package will install the newly
  162. active version's scripts, unless the ``--exclude-scripts`` or ``-x`` option is
  163. specified.
  164. Uninstalling Packages
  165. ---------------------
  166. If you have replaced a package with another version, then you can just delete
  167. the package(s) you don't need by deleting the PackageName-versioninfo.egg file
  168. or directory (found in the installation directory).
  169. If you want to delete the currently installed version of a package (or all
  170. versions of a package), you should first run::
  171. easy_install -m PackageName
  172. This will ensure that Python doesn't continue to search for a package you're
  173. planning to remove. After you've done this, you can safely delete the .egg
  174. files or directories, along with any scripts you wish to remove.
  175. Managing Scripts
  176. ----------------
  177. Whenever you install, upgrade, or change versions of a package, EasyInstall
  178. automatically installs the scripts for the selected package version, unless
  179. you tell it not to with ``-x`` or ``--exclude-scripts``. If any scripts in
  180. the script directory have the same name, they are overwritten.
  181. Thus, you do not normally need to manually delete scripts for older versions of
  182. a package, unless the newer version of the package does not include a script
  183. of the same name. However, if you are completely uninstalling a package, you
  184. may wish to manually delete its scripts.
  185. EasyInstall's default behavior means that you can normally only run scripts
  186. from one version of a package at a time. If you want to keep multiple versions
  187. of a script available, however, you can simply use the ``--multi-version`` or
  188. ``-m`` option, and rename the scripts that EasyInstall creates. This works
  189. because EasyInstall installs scripts as short code stubs that ``require()`` the
  190. matching version of the package the script came from, so renaming the script
  191. has no effect on what it executes.
  192. For example, suppose you want to use two versions of the ``rst2html`` tool
  193. provided by the `docutils <http://docutils.sf.net/>`_ package. You might
  194. first install one version::
  195. easy_install -m docutils==0.3.9
  196. then rename the ``rst2html.py`` to ``r2h_039``, and install another version::
  197. easy_install -m docutils==0.3.10
  198. This will create another ``rst2html.py`` script, this one using docutils
  199. version 0.3.10 instead of 0.3.9. You now have two scripts, each using a
  200. different version of the package. (Notice that we used ``-m`` for both
  201. installations, so that Python won't lock us out of using anything but the most
  202. recently-installed version of the package.)
  203. Executables and Launchers
  204. -------------------------
  205. On Unix systems, scripts are installed with as natural files with a "#!"
  206. header and no extension and they launch under the Python version indicated in
  207. the header.
  208. On Windows, there is no mechanism to "execute" files without extensions, so
  209. EasyInstall provides two techniques to mirror the Unix behavior. The behavior
  210. is indicated by the SETUPTOOLS_LAUNCHER environment variable, which may be
  211. "executable" (default) or "natural".
  212. Regardless of the technique used, the script(s) will be installed to a Scripts
  213. directory (by default in the Python installation directory). It is recommended
  214. for EasyInstall that you ensure this directory is in the PATH environment
  215. variable. The easiest way to ensure the Scripts directory is in the PATH is
  216. to run ``Tools\Scripts\win_add2path.py`` from the Python directory (requires
  217. Python 2.6 or later).
  218. Note that instead of changing your ``PATH`` to include the Python scripts
  219. directory, you can also retarget the installation location for scripts so they
  220. go on a directory that's already on the ``PATH``. For more information see
  221. `Command-Line Options`_ and `Configuration Files`_. During installation,
  222. pass command line options (such as ``--script-dir``) to
  223. ``ez_setup.py`` to control where ``easy_install.exe`` will be installed.
  224. Windows Executable Launcher
  225. ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  226. If the "executable" launcher is used, EasyInstall will create a '.exe'
  227. launcher of the same name beside each installed script (including
  228. ``easy_install`` itself). These small .exe files launch the script of the
  229. same name using the Python version indicated in the '#!' header.
  230. This behavior is currently default. To force
  231. the use of executable launchers, set ``SETUPTOOLS_LAUNCHER`` to "executable".
  232. Natural Script Launcher
  233. ~~~~~~~~~~~~~~~~~~~~~~~
  234. EasyInstall also supports deferring to an external launcher such as
  235. `pylauncher <https://bitbucket.org/pypa/pylauncher>`_ for launching scripts.
  236. Enable this experimental functionality by setting the
  237. ``SETUPTOOLS_LAUNCHER`` environment variable to "natural". EasyInstall will
  238. then install scripts as simple
  239. scripts with a .pya (or .pyw) extension appended. If these extensions are
  240. associated with the pylauncher and listed in the PATHEXT environment variable,
  241. these scripts can then be invoked simply and directly just like any other
  242. executable. This behavior may become default in a future version.
  243. EasyInstall uses the .pya extension instead of simply
  244. the typical '.py' extension. This distinct extension is necessary to prevent
  245. Python
  246. from treating the scripts as importable modules (where name conflicts exist).
  247. Current releases of pylauncher do not yet associate with .pya files by
  248. default, but future versions should do so.
  249. Tips & Techniques
  250. -----------------
  251. Multiple Python Versions
  252. ~~~~~~~~~~~~~~~~~~~~~~~~
  253. EasyInstall installs itself under two names:
  254. ``easy_install`` and ``easy_install-N.N``, where ``N.N`` is the Python version
  255. used to install it. Thus, if you install EasyInstall for both Python 3.2 and
  256. 2.7, you can use the ``easy_install-3.2`` or ``easy_install-2.7`` scripts to
  257. install packages for the respective Python version.
  258. Setuptools also supplies easy_install as a runnable module which may be
  259. invoked using ``python -m easy_install`` for any Python with Setuptools
  260. installed.
  261. Restricting Downloads with ``--allow-hosts``
  262. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  263. You can use the ``--allow-hosts`` (``-H``) option to restrict what domains
  264. EasyInstall will look for links and downloads on. ``--allow-hosts=None``
  265. prevents downloading altogether. You can also use wildcards, for example
  266. to restrict downloading to hosts in your own intranet. See the section below
  267. on `Command-Line Options`_ for more details on the ``--allow-hosts`` option.
  268. By default, there are no host restrictions in effect, but you can change this
  269. default by editing the appropriate `configuration files`_ and adding:
  270. .. code-block:: ini
  271. [easy_install]
  272. allow_hosts = *.myintranet.example.com,*.python.org
  273. The above example would then allow downloads only from hosts in the
  274. ``python.org`` and ``myintranet.example.com`` domains, unless overridden on the
  275. command line.
  276. Installing on Un-networked Machines
  277. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  278. Just copy the eggs or source packages you need to a directory on the target
  279. machine, then use the ``-f`` or ``--find-links`` option to specify that
  280. directory's location. For example::
  281. easy_install -H None -f somedir SomePackage
  282. will attempt to install SomePackage using only eggs and source packages found
  283. in ``somedir`` and disallowing all remote access. You should of course make
  284. sure you have all of SomePackage's dependencies available in somedir.
  285. If you have another machine of the same operating system and library versions
  286. (or if the packages aren't platform-specific), you can create the directory of
  287. eggs using a command like this::
  288. easy_install -zmaxd somedir SomePackage
  289. This will tell EasyInstall to put zipped eggs or source packages for
  290. SomePackage and all its dependencies into ``somedir``, without creating any
  291. scripts or .pth files. You can then copy the contents of ``somedir`` to the
  292. target machine. (``-z`` means zipped eggs, ``-m`` means multi-version, which
  293. prevents .pth files from being used, ``-a`` means to copy all the eggs needed,
  294. even if they're installed elsewhere on the machine, and ``-d`` indicates the
  295. directory to place the eggs in.)
  296. You can also build the eggs from local development packages that were installed
  297. with the ``setup.py develop`` command, by including the ``-l`` option, e.g.::
  298. easy_install -zmaxld somedir SomePackage
  299. This will use locally-available source distributions to build the eggs.
  300. Packaging Others' Projects As Eggs
  301. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  302. Need to distribute a package that isn't published in egg form? You can use
  303. EasyInstall to build eggs for a project. You'll want to use the ``--zip-ok``,
  304. ``--exclude-scripts``, and possibly ``--no-deps`` options (``-z``, ``-x`` and
  305. ``-N``, respectively). Use ``-d`` or ``--install-dir`` to specify the location
  306. where you'd like the eggs placed. By placing them in a directory that is
  307. published to the web, you can then make the eggs available for download, either
  308. in an intranet or to the internet at large.
  309. If someone distributes a package in the form of a single ``.py`` file, you can
  310. wrap it in an egg by tacking an ``#egg=name-version`` suffix on the file's URL.
  311. So, something like this::
  312. easy_install -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
  313. will install the package as an egg, and this::
  314. easy_install -zmaxd. \
  315. -f "http://some.example.com/downloads/foo.py#egg=foo-1.0" foo
  316. will create a ``.egg`` file in the current directory.
  317. Creating your own Package Index
  318. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  319. In addition to local directories and the Python Package Index, EasyInstall can
  320. find download links on most any web page whose URL is given to the ``-f``
  321. (``--find-links``) option. In the simplest case, you can simply have a web
  322. page with links to eggs or Python source packages, even an automatically
  323. generated directory listing (such as the Apache web server provides).
  324. If you are setting up an intranet site for package downloads, you may want to
  325. configure the target machines to use your download site by default, adding
  326. something like this to their `configuration files`_:
  327. .. code-block:: ini
  328. [easy_install]
  329. find_links = http://mypackages.example.com/somedir/
  330. http://turbogears.org/download/
  331. http://peak.telecommunity.com/dist/
  332. As you can see, you can list multiple URLs separated by whitespace, continuing
  333. on multiple lines if necessary (as long as the subsequent lines are indented.
  334. If you are more ambitious, you can also create an entirely custom package index
  335. or PyPI mirror. See the ``--index-url`` option under `Command-Line Options`_,
  336. below, and also the section on `Package Index "API"`_.
  337. Password-Protected Sites
  338. ------------------------
  339. If a site you want to download from is password-protected using HTTP "Basic"
  340. authentication, you can specify your credentials in the URL, like so::
  341. http://some_userid:some_password@some.example.com/some_path/
  342. You can do this with both index page URLs and direct download URLs. As long
  343. as any HTML pages read by easy_install use *relative* links to point to the
  344. downloads, the same user ID and password will be used to do the downloading.
  345. Using .pypirc Credentials
  346. -------------------------
  347. In additional to supplying credentials in the URL, ``easy_install`` will also
  348. honor credentials if present in the .pypirc file. Teams maintaining a private
  349. repository of packages may already have defined access credentials for
  350. uploading packages according to the distutils documentation. ``easy_install``
  351. will attempt to honor those if present. Refer to the distutils documentation
  352. for Python 2.5 or later for details on the syntax.
  353. Controlling Build Options
  354. ~~~~~~~~~~~~~~~~~~~~~~~~~
  355. EasyInstall respects standard distutils `Configuration Files`_, so you can use
  356. them to configure build options for packages that it installs from source. For
  357. example, if you are on Windows using the MinGW compiler, you can configure the
  358. default compiler by putting something like this:
  359. .. code-block:: ini
  360. [build]
  361. compiler = mingw32
  362. into the appropriate distutils configuration file. In fact, since this is just
  363. normal distutils configuration, it will affect any builds using that config
  364. file, not just ones done by EasyInstall. For example, if you add those lines
  365. to ``distutils.cfg`` in the ``distutils`` package directory, it will be the
  366. default compiler for *all* packages you build. See `Configuration Files`_
  367. below for a list of the standard configuration file locations, and links to
  368. more documentation on using distutils configuration files.
  369. Editing and Viewing Source Packages
  370. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  371. Sometimes a package's source distribution contains additional documentation,
  372. examples, configuration files, etc., that are not part of its actual code. If
  373. you want to be able to examine these files, you can use the ``--editable``
  374. option to EasyInstall, and EasyInstall will look for a source distribution
  375. or Subversion URL for the package, then download and extract it or check it out
  376. as a subdirectory of the ``--build-directory`` you specify. If you then wish
  377. to install the package after editing or configuring it, you can do so by
  378. rerunning EasyInstall with that directory as the target.
  379. Note that using ``--editable`` stops EasyInstall from actually building or
  380. installing the package; it just finds, obtains, and possibly unpacks it for
  381. you. This allows you to make changes to the package if necessary, and to
  382. either install it in development mode using ``setup.py develop`` (if the
  383. package uses setuptools, that is), or by running ``easy_install projectdir``
  384. (where ``projectdir`` is the subdirectory EasyInstall created for the
  385. downloaded package.
  386. In order to use ``--editable`` (``-e`` for short), you *must* also supply a
  387. ``--build-directory`` (``-b`` for short). The project will be placed in a
  388. subdirectory of the build directory. The subdirectory will have the same
  389. name as the project itself, but in all-lowercase. If a file or directory of
  390. that name already exists, EasyInstall will print an error message and exit.
  391. Also, when using ``--editable``, you cannot use URLs or filenames as arguments.
  392. You *must* specify project names (and optional version requirements) so that
  393. EasyInstall knows what directory name(s) to create. If you need to force
  394. EasyInstall to use a particular URL or filename, you should specify it as a
  395. ``--find-links`` item (``-f`` for short), and then also specify
  396. the project name, e.g.::
  397. easy_install -eb ~/projects \
  398. -fhttp://prdownloads.sourceforge.net/ctypes/ctypes-0.9.6.tar.gz?download \
  399. ctypes==0.9.6
  400. Dealing with Installation Conflicts
  401. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  402. (NOTE: As of 0.6a11, this section is obsolete; it is retained here only so that
  403. people using older versions of EasyInstall can consult it. As of version
  404. 0.6a11, installation conflicts are handled automatically without deleting the
  405. old or system-installed packages, and without ignoring the issue. Instead,
  406. eggs are automatically shifted to the front of ``sys.path`` using special
  407. code added to the ``easy-install.pth`` file. So, if you are using version
  408. 0.6a11 or better of setuptools, you do not need to worry about conflicts,
  409. and the following issues do not apply to you.)
  410. EasyInstall installs distributions in a "managed" way, such that each
  411. distribution can be independently activated or deactivated on ``sys.path``.
  412. However, packages that were not installed by EasyInstall are "unmanaged",
  413. in that they usually live all in one directory and cannot be independently
  414. activated or deactivated.
  415. As a result, if you are using EasyInstall to upgrade an existing package, or
  416. to install a package with the same name as an existing package, EasyInstall
  417. will warn you of the conflict. (This is an improvement over ``setup.py
  418. install``, because the ``distutils`` just install new packages on top of old
  419. ones, possibly combining two unrelated packages or leaving behind modules that
  420. have been deleted in the newer version of the package.)
  421. EasyInstall will stop the installation if it detects a conflict
  422. between an existing, "unmanaged" package, and a module or package in any of
  423. the distributions you're installing. It will display a list of all of the
  424. existing files and directories that would need to be deleted for the new
  425. package to be able to function correctly. To proceed, you must manually
  426. delete these conflicting files and directories and re-run EasyInstall.
  427. Of course, once you've replaced all of your existing "unmanaged" packages with
  428. versions managed by EasyInstall, you won't have any more conflicts to worry
  429. about!
  430. Compressed Installation
  431. ~~~~~~~~~~~~~~~~~~~~~~~
  432. EasyInstall tries to install packages in zipped form, if it can. Zipping
  433. packages can improve Python's overall import performance if you're not using
  434. the ``--multi-version`` option, because Python processes zipfile entries on
  435. ``sys.path`` much faster than it does directories.
  436. As of version 0.5a9, EasyInstall analyzes packages to determine whether they
  437. can be safely installed as a zipfile, and then acts on its analysis. (Previous
  438. versions would not install a package as a zipfile unless you used the
  439. ``--zip-ok`` option.)
  440. The current analysis approach is fairly conservative; it currently looks for:
  441. * Any use of the ``__file__`` or ``__path__`` variables (which should be
  442. replaced with ``pkg_resources`` API calls)
  443. * Possible use of ``inspect`` functions that expect to manipulate source files
  444. (e.g. ``inspect.getsource()``)
  445. * Top-level modules that might be scripts used with ``python -m`` (Python 2.4)
  446. If any of the above are found in the package being installed, EasyInstall will
  447. assume that the package cannot be safely run from a zipfile, and unzip it to
  448. a directory instead. You can override this analysis with the ``-zip-ok`` flag,
  449. which will tell EasyInstall to install the package as a zipfile anyway. Or,
  450. you can use the ``--always-unzip`` flag, in which case EasyInstall will always
  451. unzip, even if its analysis says the package is safe to run as a zipfile.
  452. Normally, however, it is simplest to let EasyInstall handle the determination
  453. of whether to zip or unzip, and only specify overrides when needed to work
  454. around a problem. If you find you need to override EasyInstall's guesses, you
  455. may want to contact the package author and the EasyInstall maintainers, so that
  456. they can make appropriate changes in future versions.
  457. (Note: If a package uses ``setuptools`` in its setup script, the package author
  458. has the option to declare the package safe or unsafe for zipped usage via the
  459. ``zip_safe`` argument to ``setup()``. If the package author makes such a
  460. declaration, EasyInstall believes the package's author and does not perform its
  461. own analysis. However, your command-line option, if any, will still override
  462. the package author's choice.)
  463. Reference Manual
  464. ================
  465. Configuration Files
  466. -------------------
  467. (New in 0.4a2)
  468. You may specify default options for EasyInstall using the standard
  469. distutils configuration files, under the command heading ``easy_install``.
  470. EasyInstall will look first for a ``setup.cfg`` file in the current directory,
  471. then a ``~/.pydistutils.cfg`` or ``$HOME\\pydistutils.cfg`` (on Unix-like OSes
  472. and Windows, respectively), and finally a ``distutils.cfg`` file in the
  473. ``distutils`` package directory. Here's a simple example:
  474. .. code-block:: ini
  475. [easy_install]
  476. # set the default location to install packages
  477. install_dir = /home/me/lib/python
  478. # Notice that indentation can be used to continue an option
  479. # value; this is especially useful for the "--find-links"
  480. # option, which tells easy_install to use download links on
  481. # these pages before consulting PyPI:
  482. #
  483. find_links = http://sqlobject.org/
  484. http://peak.telecommunity.com/dist/
  485. In addition to accepting configuration for its own options under
  486. ``[easy_install]``, EasyInstall also respects defaults specified for other
  487. distutils commands. For example, if you don't set an ``install_dir`` for
  488. ``[easy_install]``, but *have* set an ``install_lib`` for the ``[install]``
  489. command, this will become EasyInstall's default installation directory. Thus,
  490. if you are already using distutils configuration files to set default install
  491. locations, build options, etc., EasyInstall will respect your existing settings
  492. until and unless you override them explicitly in an ``[easy_install]`` section.
  493. For more information, see also the current Python documentation on the `use and
  494. location of distutils configuration files <https://docs.python.org/install/index.html#inst-config-files>`_.
  495. Notice that ``easy_install`` will use the ``setup.cfg`` from the current
  496. working directory only if it was triggered from ``setup.py`` through the
  497. ``install_requires`` option. The standalone command will not use that file.
  498. Command-Line Options
  499. --------------------
  500. ``--zip-ok, -z``
  501. Install all packages as zip files, even if they are marked as unsafe for
  502. running as a zipfile. This can be useful when EasyInstall's analysis
  503. of a non-setuptools package is too conservative, but keep in mind that
  504. the package may not work correctly. (Changed in 0.5a9; previously this
  505. option was required in order for zipped installation to happen at all.)
  506. ``--always-unzip, -Z``
  507. Don't install any packages as zip files, even if the packages are marked
  508. as safe for running as a zipfile. This can be useful if a package does
  509. something unsafe, but not in a way that EasyInstall can easily detect.
  510. EasyInstall's default analysis is currently very conservative, however, so
  511. you should only use this option if you've had problems with a particular
  512. package, and *after* reporting the problem to the package's maintainer and
  513. to the EasyInstall maintainers.
  514. (Note: the ``-z/-Z`` options only affect the installation of newly-built
  515. or downloaded packages that are not already installed in the target
  516. directory; if you want to convert an existing installed version from
  517. zipped to unzipped or vice versa, you'll need to delete the existing
  518. version first, and re-run EasyInstall.)
  519. ``--multi-version, -m``
  520. "Multi-version" mode. Specifying this option prevents ``easy_install`` from
  521. adding an ``easy-install.pth`` entry for the package being installed, and
  522. if an entry for any version the package already exists, it will be removed
  523. upon successful installation. In multi-version mode, no specific version of
  524. the package is available for importing, unless you use
  525. ``pkg_resources.require()`` to put it on ``sys.path``. This can be as
  526. simple as::
  527. from pkg_resources import require
  528. require("SomePackage", "OtherPackage", "MyPackage")
  529. which will put the latest installed version of the specified packages on
  530. ``sys.path`` for you. (For more advanced uses, like selecting specific
  531. versions and enabling optional dependencies, see the ``pkg_resources`` API
  532. doc.)
  533. Changed in 0.6a10: this option is no longer silently enabled when
  534. installing to a non-PYTHONPATH, non-"site" directory. You must always
  535. explicitly use this option if you want it to be active.
  536. ``--upgrade, -U`` (New in 0.5a4)
  537. By default, EasyInstall only searches online if a project/version
  538. requirement can't be met by distributions already installed
  539. on sys.path or the installation directory. However, if you supply the
  540. ``--upgrade`` or ``-U`` flag, EasyInstall will always check the package
  541. index and ``--find-links`` URLs before selecting a version to install. In
  542. this way, you can force EasyInstall to use the latest available version of
  543. any package it installs (subject to any version requirements that might
  544. exclude such later versions).
  545. ``--install-dir=DIR, -d DIR``
  546. Set the installation directory. It is up to you to ensure that this
  547. directory is on ``sys.path`` at runtime, and to use
  548. ``pkg_resources.require()`` to enable the installed package(s) that you
  549. need.
  550. (New in 0.4a2) If this option is not directly specified on the command line
  551. or in a distutils configuration file, the distutils default installation
  552. location is used. Normally, this would be the ``site-packages`` directory,
  553. but if you are using distutils configuration files, setting things like
  554. ``prefix`` or ``install_lib``, then those settings are taken into
  555. account when computing the default installation directory, as is the
  556. ``--prefix`` option.
  557. ``--script-dir=DIR, -s DIR``
  558. Set the script installation directory. If you don't supply this option
  559. (via the command line or a configuration file), but you *have* supplied
  560. an ``--install-dir`` (via command line or config file), then this option
  561. defaults to the same directory, so that the scripts will be able to find
  562. their associated package installation. Otherwise, this setting defaults
  563. to the location where the distutils would normally install scripts, taking
  564. any distutils configuration file settings into account.
  565. ``--exclude-scripts, -x``
  566. Don't install scripts. This is useful if you need to install multiple
  567. versions of a package, but do not want to reset the version that will be
  568. run by scripts that are already installed.
  569. ``--user`` (New in 0.6.11)
  570. Use the the user-site-packages as specified in :pep:`370`
  571. instead of the global site-packages.
  572. ``--always-copy, -a`` (New in 0.5a4)
  573. Copy all needed distributions to the installation directory, even if they
  574. are already present in a directory on sys.path. In older versions of
  575. EasyInstall, this was the default behavior, but now you must explicitly
  576. request it. By default, EasyInstall will no longer copy such distributions
  577. from other sys.path directories to the installation directory, unless you
  578. explicitly gave the distribution's filename on the command line.
  579. Note that as of 0.6a10, using this option excludes "system" and
  580. "development" eggs from consideration because they can't be reliably
  581. copied. This may cause EasyInstall to choose an older version of a package
  582. than what you expected, or it may cause downloading and installation of a
  583. fresh copy of something that's already installed. You will see warning
  584. messages for any eggs that EasyInstall skips, before it falls back to an
  585. older version or attempts to download a fresh copy.
  586. ``--find-links=URLS_OR_FILENAMES, -f URLS_OR_FILENAMES``
  587. Scan the specified "download pages" or directories for direct links to eggs
  588. or other distributions. Any existing file or directory names or direct
  589. download URLs are immediately added to EasyInstall's search cache, and any
  590. indirect URLs (ones that don't point to eggs or other recognized archive
  591. formats) are added to a list of additional places to search for download
  592. links. As soon as EasyInstall has to go online to find a package (either
  593. because it doesn't exist locally, or because ``--upgrade`` or ``-U`` was
  594. used), the specified URLs will be downloaded and scanned for additional
  595. direct links.
  596. Eggs and archives found by way of ``--find-links`` are only downloaded if
  597. they are needed to meet a requirement specified on the command line; links
  598. to unneeded packages are ignored.
  599. If all requested packages can be found using links on the specified
  600. download pages, the Python Package Index will not be consulted unless you
  601. also specified the ``--upgrade`` or ``-U`` option.
  602. (Note: if you want to refer to a local HTML file containing links, you must
  603. use a ``file:`` URL, as filenames that do not refer to a directory, egg, or
  604. archive are ignored.)
  605. You may specify multiple URLs or file/directory names with this option,
  606. separated by whitespace. Note that on the command line, you will probably
  607. have to surround the URL list with quotes, so that it is recognized as a
  608. single option value. You can also specify URLs in a configuration file;
  609. see `Configuration Files`_, above.
  610. Changed in 0.6a10: previously all URLs and directories passed to this
  611. option were scanned as early as possible, but from 0.6a10 on, only
  612. directories and direct archive links are scanned immediately; URLs are not
  613. retrieved unless a package search was already going to go online due to a
  614. package not being available locally, or due to the use of the ``--update``
  615. or ``-U`` option.
  616. ``--no-find-links`` Blocks the addition of any link.
  617. This parameter is useful if you want to avoid adding links defined in a
  618. project easy_install is installing (whether it's a requested project or a
  619. dependency). When used, ``--find-links`` is ignored.
  620. Added in Distribute 0.6.11 and Setuptools 0.7.
  621. ``--index-url=URL, -i URL`` (New in 0.4a1; default changed in 0.6c7)
  622. Specifies the base URL of the Python Package Index. The default is
  623. https://pypi.python.org/simple if not specified. When a package is requested
  624. that is not locally available or linked from a ``--find-links`` download
  625. page, the package index will be searched for download pages for the needed
  626. package, and those download pages will be searched for links to download
  627. an egg or source distribution.
  628. ``--editable, -e`` (New in 0.6a1)
  629. Only find and download source distributions for the specified projects,
  630. unpacking them to subdirectories of the specified ``--build-directory``.
  631. EasyInstall will not actually build or install the requested projects or
  632. their dependencies; it will just find and extract them for you. See
  633. `Editing and Viewing Source Packages`_ above for more details.
  634. ``--build-directory=DIR, -b DIR`` (UPDATED in 0.6a1)
  635. Set the directory used to build source packages. If a package is built
  636. from a source distribution or checkout, it will be extracted to a
  637. subdirectory of the specified directory. The subdirectory will have the
  638. same name as the extracted distribution's project, but in all-lowercase.
  639. If a file or directory of that name already exists in the given directory,
  640. a warning will be printed to the console, and the build will take place in
  641. a temporary directory instead.
  642. This option is most useful in combination with the ``--editable`` option,
  643. which forces EasyInstall to *only* find and extract (but not build and
  644. install) source distributions. See `Editing and Viewing Source Packages`_,
  645. above, for more information.
  646. ``--verbose, -v, --quiet, -q`` (New in 0.4a4)
  647. Control the level of detail of EasyInstall's progress messages. The
  648. default detail level is "info", which prints information only about
  649. relatively time-consuming operations like running a setup script, unpacking
  650. an archive, or retrieving a URL. Using ``-q`` or ``--quiet`` drops the
  651. detail level to "warn", which will only display installation reports,
  652. warnings, and errors. Using ``-v`` or ``--verbose`` increases the detail
  653. level to include individual file-level operations, link analysis messages,
  654. and distutils messages from any setup scripts that get run. If you include
  655. the ``-v`` option more than once, the second and subsequent uses are passed
  656. down to any setup scripts, increasing the verbosity of their reporting as
  657. well.
  658. ``--dry-run, -n`` (New in 0.4a4)
  659. Don't actually install the package or scripts. This option is passed down
  660. to any setup scripts run, so packages should not actually build either.
  661. This does *not* skip downloading, nor does it skip extracting source
  662. distributions to a temporary/build directory.
  663. ``--optimize=LEVEL``, ``-O LEVEL`` (New in 0.4a4)
  664. If you are installing from a source distribution, and are *not* using the
  665. ``--zip-ok`` option, this option controls the optimization level for
  666. compiling installed ``.py`` files to ``.pyo`` files. It does not affect
  667. the compilation of modules contained in ``.egg`` files, only those in
  668. ``.egg`` directories. The optimization level can be set to 0, 1, or 2;
  669. the default is 0 (unless it's set under ``install`` or ``install_lib`` in
  670. one of your distutils configuration files).
  671. ``--record=FILENAME`` (New in 0.5a4)
  672. Write a record of all installed files to FILENAME. This is basically the
  673. same as the same option for the standard distutils "install" command, and
  674. is included for compatibility with tools that expect to pass this option
  675. to "setup.py install".
  676. ``--site-dirs=DIRLIST, -S DIRLIST`` (New in 0.6a1)
  677. Specify one or more custom "site" directories (separated by commas).
  678. "Site" directories are directories where ``.pth`` files are processed, such
  679. as the main Python ``site-packages`` directory. As of 0.6a10, EasyInstall
  680. automatically detects whether a given directory processes ``.pth`` files
  681. (or can be made to do so), so you should not normally need to use this
  682. option. It is is now only necessary if you want to override EasyInstall's
  683. judgment and force an installation directory to be treated as if it
  684. supported ``.pth`` files.
  685. ``--no-deps, -N`` (New in 0.6a6)
  686. Don't install any dependencies. This is intended as a convenience for
  687. tools that wrap eggs in a platform-specific packaging system. (We don't
  688. recommend that you use it for anything else.)
  689. ``--allow-hosts=PATTERNS, -H PATTERNS`` (New in 0.6a6)
  690. Restrict downloading and spidering to hosts matching the specified glob
  691. patterns. E.g. ``-H *.python.org`` restricts web access so that only
  692. packages listed and downloadable from machines in the ``python.org``
  693. domain. The glob patterns must match the *entire* user/host/port section of
  694. the target URL(s). For example, ``*.python.org`` will NOT accept a URL
  695. like ``http://python.org/foo`` or ``http://www.python.org:8080/``.
  696. Multiple patterns can be specified by separating them with commas. The
  697. default pattern is ``*``, which matches anything.
  698. In general, this option is mainly useful for blocking EasyInstall's web
  699. access altogether (e.g. ``-Hlocalhost``), or to restrict it to an intranet
  700. or other trusted site. EasyInstall will do the best it can to satisfy
  701. dependencies given your host restrictions, but of course can fail if it
  702. can't find suitable packages. EasyInstall displays all blocked URLs, so
  703. that you can adjust your ``--allow-hosts`` setting if it is more strict
  704. than you intended. Some sites may wish to define a restrictive default
  705. setting for this option in their `configuration files`_, and then manually
  706. override the setting on the command line as needed.
  707. ``--prefix=DIR`` (New in 0.6a10)
  708. Use the specified directory as a base for computing the default
  709. installation and script directories. On Windows, the resulting default
  710. directories will be ``prefix\\Lib\\site-packages`` and ``prefix\\Scripts``,
  711. while on other platforms the defaults will be
  712. ``prefix/lib/python2.X/site-packages`` (with the appropriate version
  713. substituted) for libraries and ``prefix/bin`` for scripts.
  714. Note that the ``--prefix`` option only sets the *default* installation and
  715. script directories, and does not override the ones set on the command line
  716. or in a configuration file.
  717. ``--local-snapshots-ok, -l`` (New in 0.6c6)
  718. Normally, EasyInstall prefers to only install *released* versions of
  719. projects, not in-development ones, because such projects may not
  720. have a currently-valid version number. So, it usually only installs them
  721. when their ``setup.py`` directory is explicitly passed on the command line.
  722. However, if this option is used, then any in-development projects that were
  723. installed using the ``setup.py develop`` command, will be used to build
  724. eggs, effectively upgrading the "in-development" project to a snapshot
  725. release. Normally, this option is used only in conjunction with the
  726. ``--always-copy`` option to create a distributable snapshot of every egg
  727. needed to run an application.
  728. Note that if you use this option, you must make sure that there is a valid
  729. version number (such as an SVN revision number tag) for any in-development
  730. projects that may be used, as otherwise EasyInstall may not be able to tell
  731. what version of the project is "newer" when future installations or
  732. upgrades are attempted.
  733. .. _non-root installation:
  734. Custom Installation Locations
  735. -----------------------------
  736. By default, EasyInstall installs python packages into Python's main ``site-packages`` directory,
  737. and manages them using a custom ``.pth`` file in that same directory.
  738. Very often though, a user or developer wants ``easy_install`` to install and manage python packages
  739. in an alternative location, usually for one of 3 reasons:
  740. 1. They don't have access to write to the main Python site-packages directory.
  741. 2. They want a user-specific stash of packages, that is not visible to other users.
  742. 3. They want to isolate a set of packages to a specific python application, usually to minimize
  743. the possibility of version conflicts.
  744. Historically, there have been many approaches to achieve custom installation.
  745. The following section lists only the easiest and most relevant approaches [1]_.
  746. `Use the "--user" option`_
  747. `Use the "--user" option and customize "PYTHONUSERBASE"`_
  748. `Use "virtualenv"`_
  749. .. [1] 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`_ in Python 2.6.
  750. .. _PEP-370: http://www.python.org/dev/peps/pep-0370/
  751. Use the "--user" option
  752. ~~~~~~~~~~~~~~~~~~~~~~~
  753. With Python 2.6 came the User scheme for installation, which means that all
  754. python distributions support an alternative install location that is specific to a user [2]_ [3]_.
  755. The Default location for each OS is explained in the python documentation
  756. for the ``site.USER_BASE`` variable. This mode of installation can be turned on by
  757. specifying the ``--user`` option to ``setup.py install`` or ``easy_install``.
  758. This approach serves the need to have a user-specific stash of packages.
  759. .. [2] Prior to Python2.6, Mac OS X offered a form of the User scheme. That is now subsumed into the User scheme introduced in Python 2.6.
  760. .. [3] 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.
  761. Use the "--user" option and customize "PYTHONUSERBASE"
  762. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  763. The User scheme install location can be customized by setting the ``PYTHONUSERBASE`` environment
  764. variable, which updates the value of ``site.USER_BASE``. To isolate packages to a specific
  765. application, simply set the OS environment of that application to a specific value of
  766. ``PYTHONUSERBASE``, that contains just those packages.
  767. Use "virtualenv"
  768. ~~~~~~~~~~~~~~~~
  769. "virtualenv" is a 3rd-party python package that effectively "clones" a python installation, thereby
  770. creating an isolated location to install packages. The evolution of "virtualenv" started before the existence
  771. of the User installation scheme. "virtualenv" provides a version of ``easy_install`` that is
  772. scoped to the cloned python install and is used in the normal way. "virtualenv" does offer various features
  773. that the User installation scheme alone does not provide, e.g. the ability to hide the main python site-packages.
  774. Please refer to the `virtualenv`_ documentation for more details.
  775. .. _virtualenv: https://pypi.python.org/pypi/virtualenv
  776. Package Index "API"
  777. -------------------
  778. Custom package indexes (and PyPI) must follow the following rules for
  779. EasyInstall to be able to look up and download packages:
  780. 1. Except where stated otherwise, "pages" are HTML or XHTML, and "links"
  781. refer to ``href`` attributes.
  782. 2. Individual project version pages' URLs must be of the form
  783. ``base/projectname/version``, where ``base`` is the package index's base URL.
  784. 3. Omitting the ``/version`` part of a project page's URL (but keeping the
  785. trailing ``/``) should result in a page that is either:
  786. a) The single active version of that project, as though the version had been
  787. explicitly included, OR
  788. b) A page with links to all of the active version pages for that project.
  789. 4. Individual project version pages should contain direct links to downloadable
  790. distributions where possible. It is explicitly permitted for a project's
  791. "long_description" to include URLs, and these should be formatted as HTML
  792. links by the package index, as EasyInstall does no special processing to
  793. identify what parts of a page are index-specific and which are part of the
  794. project's supplied description.
  795. 5. Where available, MD5 information should be added to download URLs by
  796. appending a fragment identifier of the form ``#md5=...``, where ``...`` is
  797. the 32-character hex MD5 digest. EasyInstall will verify that the
  798. downloaded file's MD5 digest matches the given value.
  799. 6. Individual project version pages should identify any "homepage" or
  800. "download" URLs using ``rel="homepage"`` and ``rel="download"`` attributes
  801. on the HTML elements linking to those URLs. Use of these attributes will
  802. cause EasyInstall to always follow the provided links, unless it can be
  803. determined by inspection that they are downloadable distributions. If the
  804. links are not to downloadable distributions, they are retrieved, and if they
  805. are HTML, they are scanned for download links. They are *not* scanned for
  806. additional "homepage" or "download" links, as these are only processed for
  807. pages that are part of a package index site.
  808. 7. The root URL of the index, if retrieved with a trailing ``/``, must result
  809. in a page containing links to *all* projects' active version pages.
  810. (Note: This requirement is a workaround for the absence of case-insensitive
  811. ``safe_name()`` matching of project names in URL paths. If project names are
  812. matched in this fashion (e.g. via the PyPI server, mod_rewrite, or a similar
  813. mechanism), then it is not necessary to include this all-packages listing
  814. page.)
  815. 8. If a package index is accessed via a ``file://`` URL, then EasyInstall will
  816. automatically use ``index.html`` files, if present, when trying to read a
  817. directory with a trailing ``/`` on the URL.
  818. Backward Compatibility
  819. ~~~~~~~~~~~~~~~~~~~~~~
  820. Package indexes that wish to support setuptools versions prior to 0.6b4 should
  821. also follow these rules:
  822. * Homepage and download links must be preceded with ``"<th>Home Page"`` or
  823. ``"<th>Download URL"``, in addition to (or instead of) the ``rel=""``
  824. attributes on the actual links. These marker strings do not need to be
  825. visible, or uncommented, however! For example, the following is a valid
  826. homepage link that will work with any version of setuptools::
  827. <li>
  828. <strong>Home Page:</strong>
  829. <!-- <th>Home Page -->
  830. <a rel="homepage" href="http://sqlobject.org">http://sqlobject.org</a>
  831. </li>
  832. Even though the marker string is in an HTML comment, older versions of
  833. EasyInstall will still "see" it and know that the link that follows is the
  834. project's home page URL.
  835. * The pages described by paragraph 3(b) of the preceding section *must*
  836. contain the string ``"Index of Packages</title>"`` somewhere in their text.
  837. This can be inside of an HTML comment, if desired, and it can be anywhere
  838. in the page. (Note: this string MUST NOT appear on normal project pages, as
  839. described in paragraphs 2 and 3(a)!)
  840. In addition, for compatibility with PyPI versions that do not use ``#md5=``
  841. fragment IDs, EasyInstall uses the following regular expression to match PyPI's
  842. displayed MD5 info (broken onto two lines for readability)::
  843. <a href="([^"#]+)">([^<]+)</a>\n\s+\(<a href="[^?]+\?:action=show_md5
  844. &amp;digest=([0-9a-f]{32})">md5</a>\)
  845. History
  846. =======
  847. 0.6c9
  848. * Fixed ``win32.exe`` support for .pth files, so unnecessary directory nesting
  849. is flattened out in the resulting egg. (There was a case-sensitivity
  850. problem that affected some distributions, notably ``pywin32``.)
  851. * Prevent ``--help-commands`` and other junk from showing under Python 2.5
  852. when running ``easy_install --help``.
  853. * Fixed GUI scripts sometimes not executing on Windows
  854. * Fixed not picking up dependency links from recursive dependencies.
  855. * Only make ``.py``, ``.dll`` and ``.so`` files executable when unpacking eggs
  856. * Changes for Jython compatibility
  857. * Improved error message when a requirement is also a directory name, but the
  858. specified directory is not a source package.
  859. * Fixed ``--allow-hosts`` option blocking ``file:`` URLs
  860. * Fixed HTTP SVN detection failing when the page title included a project
  861. name (e.g. on SourceForge-hosted SVN)
  862. * Fix Jython script installation to handle ``#!`` lines better when
  863. ``sys.executable`` is a script.
  864. * Removed use of deprecated ``md5`` module if ``hashlib`` is available
  865. * Keep site directories (e.g. ``site-packages``) from being included in
  866. ``.pth`` files.
  867. 0.6c7
  868. * ``ftp:`` download URLs now work correctly.
  869. * The default ``--index-url`` is now ``https://pypi.python.org/simple``, to use
  870. the Python Package Index's new simpler (and faster!) REST API.
  871. 0.6c6
  872. * EasyInstall no longer aborts the installation process if a URL it wants to
  873. retrieve can't be downloaded, unless the URL is an actual package download.
  874. Instead, it issues a warning and tries to keep going.
  875. * Fixed distutils-style scripts originally built on Windows having their line
  876. endings doubled when installed on any platform.
  877. * Added ``--local-snapshots-ok`` flag, to allow building eggs from projects
  878. installed using ``setup.py develop``.
  879. * Fixed not HTML-decoding URLs scraped from web pages
  880. 0.6c5
  881. * Fixed ``.dll`` files on Cygwin not having executable permissions when an egg
  882. is installed unzipped.
  883. 0.6c4
  884. * Added support for HTTP "Basic" authentication using ``http://user:pass@host``
  885. URLs. If a password-protected page contains links to the same host (and
  886. protocol), those links will inherit the credentials used to access the
  887. original page.
  888. * Removed all special support for Sourceforge mirrors, as Sourceforge's
  889. mirror system now works well for non-browser downloads.
  890. * Fixed not recognizing ``win32.exe`` installers that included a custom
  891. bitmap.
  892. * Fixed not allowing ``os.open()`` of paths outside the sandbox, even if they
  893. are opened read-only (e.g. reading ``/dev/urandom`` for random numbers, as
  894. is done by ``os.urandom()`` on some platforms).
  895. * Fixed a problem with ``.pth`` testing on Windows when ``sys.executable``
  896. has a space in it (e.g., the user installed Python to a ``Program Files``
  897. directory).
  898. 0.6c3
  899. * You can once again use "python -m easy_install" with Python 2.4 and above.
  900. * Python 2.5 compatibility fixes added.
  901. 0.6c2
  902. * Windows script wrappers now support quoted arguments and arguments
  903. containing spaces. (Patch contributed by Jim Fulton.)
  904. * The ``ez_setup.py`` script now actually works when you put a setuptools
  905. ``.egg`` alongside it for bootstrapping an offline machine.
  906. * A writable installation directory on ``sys.path`` is no longer required to
  907. download and extract a source distribution using ``--editable``.
  908. * Generated scripts now use ``-x`` on the ``#!`` line when ``sys.executable``
  909. contains non-ASCII characters, to prevent deprecation warnings about an
  910. unspecified encoding when the script is run.
  911. 0.6c1
  912. * EasyInstall now includes setuptools version information in the
  913. ``User-Agent`` string sent to websites it visits.
  914. 0.6b4
  915. * Fix creating Python wrappers for non-Python scripts
  916. * Fix ``ftp://`` directory listing URLs from causing a crash when used in the
  917. "Home page" or "Download URL" slots on PyPI.
  918. * Fix ``sys.path_importer_cache`` not being updated when an existing zipfile
  919. or directory is deleted/overwritten.
  920. * Fix not recognizing HTML 404 pages from package indexes.
  921. * Allow ``file://`` URLs to be used as a package index. URLs that refer to
  922. directories will use an internally-generated directory listing if there is
  923. no ``index.html`` file in the directory.
  924. * Allow external links in a package index to be specified using
  925. ``rel="homepage"`` or ``rel="download"``, without needing the old
  926. PyPI-specific visible markup.
  927. * Suppressed warning message about possibly-misspelled project name, if an egg
  928. or link for that project name has already been seen.
  929. 0.6b3
  930. * Fix local ``--find-links`` eggs not being copied except with
  931. ``--always-copy``.
  932. * Fix sometimes not detecting local packages installed outside of "site"
  933. directories.
  934. * Fix mysterious errors during initial ``setuptools`` install, caused by
  935. ``ez_setup`` trying to run ``easy_install`` twice, due to a code fallthru
  936. after deleting the egg from which it's running.
  937. 0.6b2
  938. * Don't install or update a ``site.py`` patch when installing to a
  939. ``PYTHONPATH`` directory with ``--multi-version``, unless an
  940. ``easy-install.pth`` file is already in use there.
  941. * Construct ``.pth`` file paths in such a way that installing an egg whose
  942. name begins with ``import`` doesn't cause a syntax error.
  943. * Fixed a bogus warning message that wasn't updated since the 0.5 versions.
  944. 0.6b1
  945. * Better ambiguity management: accept ``#egg`` name/version even if processing
  946. what appears to be a correctly-named distutils file, and ignore ``.egg``
  947. files with no ``-``, since valid Python ``.egg`` files always have a version
  948. number (but Scheme eggs often don't).
  949. * Support ``file://`` links to directories in ``--find-links``, so that
  950. easy_install can build packages from local source checkouts.
  951. * Added automatic retry for Sourceforge mirrors. The new download process is
  952. to first just try dl.sourceforge.net, then randomly select mirror IPs and
  953. remove ones that fail, until something works. The removed IPs stay removed
  954. for the remainder of the run.
  955. * Ignore bdist_dumb distributions when looking at download URLs.
  956. 0.6a11
  957. * Process ``dependency_links.txt`` if found in a distribution, by adding the
  958. URLs to the list for scanning.
  959. * Use relative paths in ``.pth`` files when eggs are being installed to the
  960. same directory as the ``.pth`` file. This maximizes portability of the
  961. target directory when building applications that contain eggs.
  962. * Added ``easy_install-N.N`` script(s) for convenience when using multiple
  963. Python versions.
  964. * Added automatic handling of installation conflicts. Eggs are now shifted to
  965. the front of sys.path, in an order consistent with where they came from,
  966. making EasyInstall seamlessly co-operate with system package managers.
  967. The ``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk`` options
  968. are now no longer necessary, and will generate warnings at the end of a
  969. run if you use them.
  970. * Don't recursively traverse subdirectories given to ``--find-links``.
  971. 0.6a10
  972. * Added exhaustive testing of the install directory, including a spawn test
  973. for ``.pth`` file support, and directory writability/existence checks. This
  974. should virtually eliminate the need to set or configure ``--site-dirs``.
  975. * Added ``--prefix`` option for more do-what-I-mean-ishness in the absence of
  976. RTFM-ing. :)
  977. * Enhanced ``PYTHONPATH`` support so that you don't have to put any eggs on it
  978. manually to make it work. ``--multi-version`` is no longer a silent
  979. default; you must explicitly use it if installing to a non-PYTHONPATH,
  980. non-"site" directory.
  981. * Expand ``$variables`` used in the ``--site-dirs``, ``--build-directory``,
  982. ``--install-dir``, and ``--script-dir`` options, whether on the command line
  983. or in configuration files.
  984. * Improved SourceForge mirror processing to work faster and be less affected
  985. by transient HTML changes made by SourceForge.
  986. * PyPI searches now use the exact spelling of requirements specified on the
  987. command line or in a project's ``install_requires``. Previously, a
  988. normalized form of the name was used, which could lead to unnecessary
  989. full-index searches when a project's name had an underscore (``_``) in it.
  990. * EasyInstall can now download bare ``.py`` files and wrap them in an egg,
  991. as long as you include an ``#egg=name-version`` suffix on the URL, or if
  992. the ``.py`` file is listed as the "Download URL" on the project's PyPI page.
  993. This allows third parties to "package" trivial Python modules just by
  994. linking to them (e.g. from within their own PyPI page or download links
  995. page).
  996. * The ``--always-copy`` option now skips "system" and "development" eggs since
  997. they can't be reliably copied. Note that this may cause EasyInstall to
  998. choose an older version of a package than what you expected, or it may cause
  999. downloading and installation of a fresh version of what's already installed.
  1000. * The ``--find-links`` option previously scanned all supplied URLs and
  1001. directories as early as possible, but now only directories and direct
  1002. archive links are scanned immediately. URLs are not retrieved unless a
  1003. package search was already going to go online due to a package not being
  1004. available locally, or due to the use of the ``--update`` or ``-U`` option.
  1005. * Fixed the annoying ``--help-commands`` wart.
  1006. 0.6a9
  1007. * Fixed ``.pth`` file processing picking up nested eggs (i.e. ones inside
  1008. "baskets") when they weren't explicitly listed in the ``.pth`` file.
  1009. * If more than one URL appears to describe the exact same distribution, prefer
  1010. the shortest one. This helps to avoid "table of contents" CGI URLs like the
  1011. ones on effbot.org.
  1012. * Quote arguments to python.exe (including python's path) to avoid problems
  1013. when Python (or a script) is installed in a directory whose name contains
  1014. spaces on Windows.
  1015. * Support full roundtrip translation of eggs to and from ``bdist_wininst``
  1016. format. Running ``bdist_wininst`` on a setuptools-based package wraps the
  1017. egg in an .exe that will safely install it as an egg (i.e., with metadata
  1018. and entry-point wrapper scripts), and ``easy_install`` can turn the .exe
  1019. back into an ``.egg`` file or directory and install it as such.
  1020. 0.6a8
  1021. * Update for changed SourceForge mirror format
  1022. * Fixed not installing dependencies for some packages fetched via Subversion
  1023. * Fixed dependency installation with ``--always-copy`` not using the same
  1024. dependency resolution procedure as other operations.
  1025. * Fixed not fully removing temporary directories on Windows, if a Subversion
  1026. checkout left read-only files behind
  1027. * Fixed some problems building extensions when Pyrex was installed, especially
  1028. with Python 2.4 and/or packages using SWIG.
  1029. 0.6a7
  1030. * Fixed not being able to install Windows script wrappers using Python 2.3
  1031. 0.6a6
  1032. * Added support for "traditional" PYTHONPATH-based non-root installation, and
  1033. also the convenient ``virtual-python.py`` script, based on a contribution
  1034. by Ian Bicking. The setuptools egg now contains a hacked ``site`` module
  1035. that makes the PYTHONPATH-based approach work with .pth files, so that you
  1036. can get the full EasyInstall feature set on such installations.
  1037. * Added ``--no-deps`` and ``--allow-hosts`` options.
  1038. * Improved Windows ``.exe`` script wrappers so that the script can have the
  1039. same name as a module without confusing Python.
  1040. * Changed dependency processing so that it's breadth-first, allowing a
  1041. depender's preferences to override those of a dependee, to prevent conflicts
  1042. when a lower version is acceptable to the dependee, but not the depender.
  1043. Also, ensure that currently installed/selected packages aren't given
  1044. precedence over ones desired by a package being installed, which could
  1045. cause conflict errors.
  1046. 0.6a3
  1047. * Improved error message when trying to use old ways of running
  1048. ``easy_install``. Removed the ability to run via ``python -m`` or by
  1049. running ``easy_install.py``; ``easy_install`` is the command to run on all
  1050. supported platforms.
  1051. * Improved wrapper script generation and runtime initialization so that a
  1052. VersionConflict doesn't occur if you later install a competing version of a
  1053. needed package as the default version of that package.
  1054. * Fixed a problem parsing version numbers in ``#egg=`` links.
  1055. 0.6a2
  1056. * EasyInstall can now install "console_scripts" defined by packages that use
  1057. ``setuptools`` and define appropriate entry points. On Windows, console
  1058. scripts get an ``.exe`` wrapper so you can just type their name. On other
  1059. platforms, the scripts are installed without a file extension.
  1060. * Using ``python -m easy_install`` or running ``easy_install.py`` is now
  1061. DEPRECATED, since an ``easy_install`` wrapper is now available on all
  1062. platforms.
  1063. 0.6a1
  1064. * EasyInstall now does MD5 validation of downloads from PyPI, or from any link
  1065. that has an "#md5=..." trailer with a 32-digit lowercase hex md5 digest.
  1066. * EasyInstall now handles symlinks in target directories by removing the link,
  1067. rather than attempting to overwrite the link's destination. This makes it
  1068. easier to set up an alternate Python "home" directory (as described above in
  1069. the `Non-Root Installation`_ section).
  1070. * Added support for handling MacOS platform information in ``.egg`` filenames,
  1071. based on a contribution by Kevin Dangoor. You may wish to delete and
  1072. reinstall any eggs whose filename includes "darwin" and "Power_Macintosh",
  1073. because the format for this platform information has changed so that minor
  1074. OS X upgrades (such as 10.4.1 to 10.4.2) do not cause eggs built with a
  1075. previous OS version to become obsolete.
  1076. * easy_install's dependency processing algorithms have changed. When using
  1077. ``--always-copy``, it now ensures that dependencies are copied too. When
  1078. not using ``--always-copy``, it tries to use a single resolution loop,
  1079. rather than recursing.
  1080. * Fixed installing extra ``.pyc`` or ``.pyo`` files for scripts with ``.py``
  1081. extensions.
  1082. * Added ``--site-dirs`` option to allow adding custom "site" directories.
  1083. Made ``easy-install.pth`` work in platform-specific alternate site
  1084. directories (e.g. ``~/Library/Python/2.x/site-packages`` on Mac OS X).
  1085. * If you manually delete the current version of a package, the next run of
  1086. EasyInstall against the target directory will now remove the stray entry
  1087. from the ``easy-install.pth`` file.
  1088. * EasyInstall now recognizes URLs with a ``#egg=project_name`` fragment ID
  1089. as pointing to the named project's source checkout. Such URLs have a lower
  1090. match precedence than any other kind of distribution, so they'll only be
  1091. used if they have a higher version number than any other available
  1092. distribution, or if you use the ``--editable`` option. The ``#egg``
  1093. fragment can contain a version if it's formatted as ``#egg=proj-ver``,
  1094. where ``proj`` is the project name, and ``ver`` is the version number. You
  1095. *must* use the format for these values that the ``bdist_egg`` command uses;
  1096. i.e., all non-alphanumeric runs must be condensed to single underscore
  1097. characters.
  1098. * Added the ``--editable`` option; see `Editing and Viewing Source Packages`_
  1099. above for more info. Also, slightly changed the behavior of the
  1100. ``--build-directory`` option.
  1101. * Fixed the setup script sandbox facility not recognizing certain paths as
  1102. valid on case-insensitive platforms.
  1103. 0.5a12
  1104. * Fix ``python -m easy_install`` not working due to setuptools being installed
  1105. as a zipfile. Update safety scanner to check for modules that might be used
  1106. as ``python -m`` scripts.
  1107. * Misc. fixes for win32.exe support, including changes to support Python 2.4's
  1108. changed ``bdist_wininst`` format.
  1109. 0.5a10
  1110. * Put the ``easy_install`` module back in as a module, as it's needed for
  1111. ``python -m`` to run it!
  1112. * Allow ``--find-links/-f`` to accept local directories or filenames as well
  1113. as URLs.
  1114. 0.5a9
  1115. * EasyInstall now automatically detects when an "unmanaged" package or
  1116. module is going to be on ``sys.path`` ahead of a package you're installing,
  1117. thereby preventing the newer version from being imported. By default, it
  1118. will abort installation to alert you of the problem, but there are also
  1119. new options (``--delete-conflicting`` and ``--ignore-conflicts-at-my-risk``)
  1120. available to change the default behavior. (Note: this new feature doesn't
  1121. take effect for egg files that were built with older ``setuptools``
  1122. versions, because they lack the new metadata file required to implement it.)
  1123. * The ``easy_install`` distutils command now uses ``DistutilsError`` as its
  1124. base error type for errors that should just issue a message to stderr and
  1125. exit the program without a traceback.
  1126. * EasyInstall can now be given a path to a directory containing a setup
  1127. script, and it will attempt to build and install the package there.
  1128. * EasyInstall now performs a safety analysis on module contents to determine
  1129. whether a package is likely to run in zipped form, and displays
  1130. information about what modules may be doing introspection that would break
  1131. when running as a zipfile.
  1132. * Added the ``--always-unzip/-Z`` option, to force unzipping of packages that
  1133. would ordinarily be considered safe to unzip, and changed the meaning of
  1134. ``--zip-ok/-z`` to "always leave everything zipped".
  1135. 0.5a8
  1136. * There is now a separate documentation page for `setuptools`_; revision
  1137. history that's not specific to EasyInstall has been moved to that page.
  1138. .. _setuptools: http://peak.telecommunity.com/DevCenter/setuptools
  1139. 0.5a5
  1140. * Made ``easy_install`` a standard ``setuptools`` command, moving it from
  1141. the ``easy_install`` module to ``setuptools.command.easy_install``. Note
  1142. that if you were importing or extending it, you must now change your imports
  1143. accordingly. ``easy_install.py`` is still installed as a script, but not as
  1144. a module.
  1145. 0.5a4
  1146. * Added ``--always-copy/-a`` option to always copy needed packages to the
  1147. installation directory, even if they're already present elsewhere on
  1148. sys.path. (In previous versions, this was the default behavior, but now
  1149. you must request it.)
  1150. * Added ``--upgrade/-U`` option to force checking PyPI for latest available
  1151. version(s) of all packages requested by name and version, even if a matching
  1152. version is available locally.
  1153. * Added automatic installation of dependencies declared by a distribution
  1154. being installed. These dependencies must be listed in the distribution's
  1155. ``EGG-INFO`` directory, so the distribution has to have declared its
  1156. dependencies by using setuptools. If a package has requirements it didn't
  1157. declare, you'll still have to deal with them yourself. (E.g., by asking
  1158. EasyInstall to find and install them.)
  1159. * Added the ``--record`` option to ``easy_install`` for the benefit of tools
  1160. that run ``setup.py install --record=filename`` on behalf of another
  1161. packaging system.)
  1162. 0.5a3
  1163. * Fixed not setting script permissions to allow execution.
  1164. * Improved sandboxing so that setup scripts that want a temporary directory
  1165. (e.g. pychecker) can still run in the sandbox.
  1166. 0.5a2
  1167. * Fix stupid stupid refactoring-at-the-last-minute typos. :(
  1168. 0.5a1
  1169. * Added support for converting ``.win32.exe`` installers to eggs on the fly.
  1170. EasyInstall will now recognize such files by name and install them.
  1171. * Fixed a problem with picking the "best" version to install (versions were
  1172. being sorted as strings, rather than as parsed values)
  1173. 0.4a4
  1174. * Added support for the distutils "verbose/quiet" and "dry-run" options, as
  1175. well as the "optimize" flag.
  1176. * Support downloading packages that were uploaded to PyPI (by scanning all
  1177. links on package pages, not just the homepage/download links).
  1178. 0.4a3
  1179. * Add progress messages to the search/download process so that you can tell
  1180. what URLs it's reading to find download links. (Hopefully, this will help
  1181. people report out-of-date and broken links to package authors, and to tell
  1182. when they've asked for a package that doesn't exist.)
  1183. 0.4a2
  1184. * Added support for installing scripts
  1185. * Added support for setting options via distutils configuration files, and
  1186. using distutils' default options as a basis for EasyInstall's defaults.
  1187. * Renamed ``--scan-url/-s`` to ``--find-links/-f`` to free up ``-s`` for the
  1188. script installation directory option.
  1189. * Use ``urllib2`` instead of ``urllib``, to allow use of ``https:`` URLs if
  1190. Python includes SSL support.
  1191. 0.4a1
  1192. * Added ``--scan-url`` and ``--index-url`` options, to scan download pages
  1193. and search PyPI for needed packages.
  1194. 0.3a4
  1195. * Restrict ``--build-directory=DIR/-b DIR`` option to only be used with single
  1196. URL installs, to avoid running the wrong setup.py.
  1197. 0.3a3
  1198. * Added ``--build-directory=DIR/-b DIR`` option.
  1199. * Added "installation report" that explains how to use 'require()' when doing
  1200. a multiversion install or alternate installation directory.
  1201. * Added SourceForge mirror auto-select (Contributed by Ian Bicking)
  1202. * Added "sandboxing" that stops a setup script from running if it attempts to
  1203. write to the filesystem outside of the build area
  1204. * Added more workarounds for packages with quirky ``install_data`` hacks
  1205. 0.3a2
  1206. * Added subversion download support for ``svn:`` and ``svn+`` URLs, as well as
  1207. automatic recognition of HTTP subversion URLs (Contributed by Ian Bicking)
  1208. * Misc. bug fixes
  1209. 0.3a1
  1210. * Initial release.
  1211. Future Plans
  1212. ============
  1213. * Additional utilities to list/remove/verify packages
  1214. * Signature checking? SSL? Ability to suppress PyPI search?
  1215. * Display byte progress meter when downloading distributions and long pages?
  1216. * Redirect stdout/stderr to log during run_setup?