pythonic-emacs/anaconda-mode

As of setuptools 53.0 .command.easy_install.main() is removed breaking anaconda-mode

danieldjewell opened this issue · 3 comments

This: pypa/setuptools@2885ca2 commit to setuptools removes main() from easy_install.

This causes anaconda-mode to fail here:

setuptools.command.easy_install.main(cmd)

dakra commented

Thanks for the info.
Do you know what we should use instead?

A PR which fixes this in a backwards compatible way is welcome.

Do you know what we should use instead?

From pypa/setuptools#917, It is pip.

A quick workaround that works with python3 (not backward compatible)

diff --git a/anaconda-mode.py b/anaconda-mode.py
index 7552f49..89d643b
--- a/anaconda-mode.py
+++ b/anaconda-mode.py
@@ -3,6 +3,8 @@ from __future__ import print_function
 import sys
 import os
 from distutils.version import LooseVersion
+import subprocess
+

 # CLI arguments.

@@ -52,13 +54,10 @@ instrument_installation()

 def install_deps():
     import site
-    import setuptools.command.easy_install
     site.addsitedir(server_directory)
-    cmd = ['--install-dir', server_directory,
-           '--site-dirs', server_directory,
-           '--always-copy','--always-unzip']
+    cmd = [sys.executable, '-m', 'pip', 'install', '--target', server_directory]
     cmd.extend(missing_dependencies)
-    setuptools.command.easy_install.main(cmd)
+    subprocess.check_call(cmd)
     instrument_installation()

 if missing_dependencies:
dakra commented

Thanks @shanavas786 I took your changes for Python 3+ installations and keep setuptools for Python2.

If someone can check the PR and verify that it works, I would merge it in master.