pythonic-emacs / anaconda-mode

Code navigation, documentation lookup and completion for Python.
GNU General Public License v3.0
706 stars 87 forks source link

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

Closed danieldjewell closed 3 years ago

danieldjewell commented 3 years ago

This: https://github.com/pypa/setuptools/commit/2885ca26494e6f555fae85f8f9983c2361c93829 commit to setuptools removes main() from easy_install.

This causes anaconda-mode to fail here: https://github.com/pythonic-emacs/anaconda-mode/blob/b1875a5d0ec9885c1c42558c126b93ee6bcedaa6/anaconda-mode.el#L151

dakra commented 3 years ago

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

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

shanavas786 commented 3 years ago

Do you know what we should use instead?

From https://github.com/pypa/setuptools/issues/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 3 years ago

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.