Eliminado venv y www del repositorio, agrege un requirements igual
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Easy Install
|
||||
------------
|
||||
@@ -64,7 +63,7 @@ from pkg_resources import (
|
||||
Distribution, PathMetadata, EggMetadata, WorkingSet, DistributionNotFound,
|
||||
VersionConflict, DEVELOP_DIST,
|
||||
)
|
||||
import pkg_resources.py31compat
|
||||
import pkg_resources
|
||||
|
||||
__metaclass__ = type
|
||||
|
||||
@@ -121,7 +120,8 @@ else:
|
||||
return False
|
||||
|
||||
|
||||
_one_liner = lambda text: textwrap.dedent(text).strip().replace('\n', '; ')
|
||||
def _one_liner(text):
|
||||
return textwrap.dedent(text).strip().replace('\n', '; ')
|
||||
|
||||
|
||||
class easy_install(Command):
|
||||
@@ -156,19 +156,16 @@ class easy_install(Command):
|
||||
"allow building eggs from local checkouts"),
|
||||
('version', None, "print version information and exit"),
|
||||
('no-find-links', None,
|
||||
"Don't load find-links defined in packages being installed")
|
||||
"Don't load find-links defined in packages being installed"),
|
||||
('user', None, "install in user site-package '%s'" % site.USER_SITE)
|
||||
]
|
||||
boolean_options = [
|
||||
'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
|
||||
'editable',
|
||||
'no-deps', 'local-snapshots-ok', 'version'
|
||||
'no-deps', 'local-snapshots-ok', 'version',
|
||||
'user'
|
||||
]
|
||||
|
||||
if site.ENABLE_USER_SITE:
|
||||
help_msg = "install in user site-package '%s'" % site.USER_SITE
|
||||
user_options.append(('user', None, help_msg))
|
||||
boolean_options.append('user')
|
||||
|
||||
negative_opt = {'always-unzip': 'zip-ok'}
|
||||
create_index = PackageIndex
|
||||
|
||||
@@ -208,7 +205,6 @@ class easy_install(Command):
|
||||
self.pth_file = self.always_copy_from = None
|
||||
self.site_dirs = None
|
||||
self.installed_projects = {}
|
||||
self.sitepy_installed = False
|
||||
# Always read easy_install options, even if we are subclassed, or have
|
||||
# an independent instance created. This ensures that defaults will
|
||||
# always come from the standard configuration file(s)' "easy_install"
|
||||
@@ -241,7 +237,7 @@ class easy_install(Command):
|
||||
"""
|
||||
Render the Setuptools version and installation details, then exit.
|
||||
"""
|
||||
ver = sys.version[:3]
|
||||
ver = '{}.{}'.format(*sys.version_info)
|
||||
dist = get_distribution('setuptools')
|
||||
tmpl = 'setuptools {dist.version} from {dist.location} (Python {ver})'
|
||||
print(tmpl.format(**locals()))
|
||||
@@ -272,6 +268,9 @@ class easy_install(Command):
|
||||
self.config_vars['userbase'] = self.install_userbase
|
||||
self.config_vars['usersite'] = self.install_usersite
|
||||
|
||||
elif self.user:
|
||||
log.warn("WARNING: The user site-packages directory is disabled.")
|
||||
|
||||
self._fix_install_dir_for_user_site()
|
||||
|
||||
self.expand_basedirs()
|
||||
@@ -356,8 +355,10 @@ class easy_install(Command):
|
||||
self.optimize = int(self.optimize)
|
||||
if not (0 <= self.optimize <= 2):
|
||||
raise ValueError
|
||||
except ValueError:
|
||||
raise DistutilsOptionError("--optimize must be 0, 1, or 2")
|
||||
except ValueError as e:
|
||||
raise DistutilsOptionError(
|
||||
"--optimize must be 0, 1, or 2"
|
||||
) from e
|
||||
|
||||
if self.editable and not self.build_directory:
|
||||
raise DistutilsArgError(
|
||||
@@ -410,7 +411,13 @@ class easy_install(Command):
|
||||
]
|
||||
self._expand_attrs(dirs)
|
||||
|
||||
def run(self):
|
||||
def run(self, show_deprecation=True):
|
||||
if show_deprecation:
|
||||
self.announce(
|
||||
"WARNING: The easy_install command is deprecated "
|
||||
"and will be removed in a future version.",
|
||||
log.WARN,
|
||||
)
|
||||
if self.verbose != self.distribution.verbose:
|
||||
log.set_verbosity(self.verbose)
|
||||
try:
|
||||
@@ -453,6 +460,12 @@ class easy_install(Command):
|
||||
instdir = normalize_path(self.install_dir)
|
||||
pth_file = os.path.join(instdir, 'easy-install.pth')
|
||||
|
||||
if not os.path.exists(instdir):
|
||||
try:
|
||||
os.makedirs(instdir)
|
||||
except (OSError, IOError):
|
||||
self.cant_write_to_target()
|
||||
|
||||
# Is it a configured, PYTHONPATH, implicit, or explicit site dir?
|
||||
is_site_dir = instdir in self.all_site_dirs
|
||||
|
||||
@@ -472,8 +485,9 @@ class easy_install(Command):
|
||||
self.cant_write_to_target()
|
||||
|
||||
if not is_site_dir and not self.multi_version:
|
||||
# Can't install non-multi to non-site dir
|
||||
raise DistutilsError(self.no_default_version_msg())
|
||||
# Can't install non-multi to non-site dir with easy_install
|
||||
pythonpath = os.environ.get('PYTHONPATH', '')
|
||||
log.warn(self.__no_default_msg, self.install_dir, pythonpath)
|
||||
|
||||
if is_site_dir:
|
||||
if self.pth_file is None:
|
||||
@@ -481,12 +495,8 @@ class easy_install(Command):
|
||||
else:
|
||||
self.pth_file = None
|
||||
|
||||
if instdir not in map(normalize_path, _pythonpath()):
|
||||
# only PYTHONPATH dirs need a site.py, so pretend it's there
|
||||
self.sitepy_installed = True
|
||||
elif self.multi_version and not os.path.exists(pth_file):
|
||||
self.sitepy_installed = True # don't need site.py in this case
|
||||
self.pth_file = None # and don't create a .pth file
|
||||
if self.multi_version and not os.path.exists(pth_file):
|
||||
self.pth_file = None # don't create a .pth file
|
||||
self.install_dir = instdir
|
||||
|
||||
__cant_write_msg = textwrap.dedent("""
|
||||
@@ -501,13 +511,13 @@ class easy_install(Command):
|
||||
the distutils default setting) was:
|
||||
|
||||
%s
|
||||
""").lstrip()
|
||||
""").lstrip() # noqa
|
||||
|
||||
__not_exists_id = textwrap.dedent("""
|
||||
This directory does not currently exist. Please create it and try again, or
|
||||
choose a different installation directory (using the -d or --install-dir
|
||||
option).
|
||||
""").lstrip()
|
||||
""").lstrip() # noqa
|
||||
|
||||
__access_msg = textwrap.dedent("""
|
||||
Perhaps your account does not have write access to this directory? If the
|
||||
@@ -523,7 +533,7 @@ class easy_install(Command):
|
||||
https://setuptools.readthedocs.io/en/latest/easy_install.html
|
||||
|
||||
Please make the appropriate changes for your system and try again.
|
||||
""").lstrip()
|
||||
""").lstrip() # noqa
|
||||
|
||||
def cant_write_to_target(self):
|
||||
msg = self.__cant_write_msg % (sys.exc_info()[1], self.install_dir,)
|
||||
@@ -551,7 +561,7 @@ class easy_install(Command):
|
||||
if ok_exists:
|
||||
os.unlink(ok_file)
|
||||
dirname = os.path.dirname(ok_file)
|
||||
pkg_resources.py31compat.makedirs(dirname, exist_ok=True)
|
||||
os.makedirs(dirname, exist_ok=True)
|
||||
f = open(pth_file, 'w')
|
||||
except (OSError, IOError):
|
||||
self.cant_write_to_target()
|
||||
@@ -643,9 +653,6 @@ class easy_install(Command):
|
||||
os.path.exists(tmpdir) and rmtree(rmtree_safe(tmpdir))
|
||||
|
||||
def easy_install(self, spec, deps=False):
|
||||
if not self.editable:
|
||||
self.install_site_py()
|
||||
|
||||
with self._tmpdir() as tmpdir:
|
||||
if not isinstance(spec, Requirement):
|
||||
if URL_SCHEME(spec):
|
||||
@@ -752,9 +759,9 @@ class easy_install(Command):
|
||||
[requirement], self.local_index, self.easy_install
|
||||
)
|
||||
except DistributionNotFound as e:
|
||||
raise DistutilsError(str(e))
|
||||
raise DistutilsError(str(e)) from e
|
||||
except VersionConflict as e:
|
||||
raise DistutilsError(e.report())
|
||||
raise DistutilsError(e.report()) from e
|
||||
if self.always_copy or self.always_copy_from:
|
||||
# Force all the relevant distros to be copied or activated
|
||||
for dist in distros:
|
||||
@@ -1087,13 +1094,13 @@ class easy_install(Command):
|
||||
pkg_resources.require("%(name)s") # latest installed version
|
||||
pkg_resources.require("%(name)s==%(version)s") # this exact version
|
||||
pkg_resources.require("%(name)s>=%(version)s") # this version or higher
|
||||
""").lstrip()
|
||||
""").lstrip() # noqa
|
||||
|
||||
__id_warning = textwrap.dedent("""
|
||||
Note also that the installation directory must be on sys.path at runtime for
|
||||
this to work. (e.g. by being the application's script directory, by being on
|
||||
PYTHONPATH, or by being added to sys.path by your code.)
|
||||
""")
|
||||
""") # noqa
|
||||
|
||||
def installation_report(self, req, dist, what="Installed"):
|
||||
"""Helpful installation message for display to package users"""
|
||||
@@ -1118,7 +1125,7 @@ class easy_install(Command):
|
||||
%(python)s setup.py develop
|
||||
|
||||
See the setuptools documentation for the "develop" command for more info.
|
||||
""").lstrip()
|
||||
""").lstrip() # noqa
|
||||
|
||||
def report_editable(self, spec, setup_script):
|
||||
dirname = os.path.dirname(setup_script)
|
||||
@@ -1143,7 +1150,9 @@ class easy_install(Command):
|
||||
try:
|
||||
run_setup(setup_script, args)
|
||||
except SystemExit as v:
|
||||
raise DistutilsError("Setup script exited with %s" % (v.args[0],))
|
||||
raise DistutilsError(
|
||||
"Setup script exited with %s" % (v.args[0],)
|
||||
) from v
|
||||
|
||||
def build_and_install(self, setup_script, setup_base):
|
||||
args = ['bdist_egg', '--dist-dir']
|
||||
@@ -1180,8 +1189,7 @@ class easy_install(Command):
|
||||
# to the setup.cfg file.
|
||||
ei_opts = self.distribution.get_option_dict('easy_install').copy()
|
||||
fetch_directives = (
|
||||
'find_links', 'site_dirs', 'index_url', 'optimize',
|
||||
'site_dirs', 'allow_hosts',
|
||||
'find_links', 'site_dirs', 'index_url', 'optimize', 'allow_hosts',
|
||||
)
|
||||
fetch_options = {}
|
||||
for key, val in ei_opts.items():
|
||||
@@ -1302,43 +1310,8 @@ class easy_install(Command):
|
||||
https://setuptools.readthedocs.io/en/latest/easy_install.html#custom-installation-locations
|
||||
|
||||
|
||||
Please make the appropriate changes for your system and try again.""").lstrip()
|
||||
|
||||
def no_default_version_msg(self):
|
||||
template = self.__no_default_msg
|
||||
return template % (self.install_dir, os.environ.get('PYTHONPATH', ''))
|
||||
|
||||
def install_site_py(self):
|
||||
"""Make sure there's a site.py in the target dir, if needed"""
|
||||
|
||||
if self.sitepy_installed:
|
||||
return # already did it, or don't need to
|
||||
|
||||
sitepy = os.path.join(self.install_dir, "site.py")
|
||||
source = resource_string("setuptools", "site-patch.py")
|
||||
source = source.decode('utf-8')
|
||||
current = ""
|
||||
|
||||
if os.path.exists(sitepy):
|
||||
log.debug("Checking existing site.py in %s", self.install_dir)
|
||||
with io.open(sitepy) as strm:
|
||||
current = strm.read()
|
||||
|
||||
if not current.startswith('def __boot():'):
|
||||
raise DistutilsError(
|
||||
"%s is not a setuptools-generated site.py; please"
|
||||
" remove it." % sitepy
|
||||
)
|
||||
|
||||
if current != source:
|
||||
log.info("Creating %s", sitepy)
|
||||
if not self.dry_run:
|
||||
ensure_directory(sitepy)
|
||||
with io.open(sitepy, 'w', encoding='utf-8') as strm:
|
||||
strm.write(source)
|
||||
self.byte_compile([sitepy])
|
||||
|
||||
self.sitepy_installed = True
|
||||
Please make the appropriate changes for your system and try again.
|
||||
""").strip()
|
||||
|
||||
def create_home_path(self):
|
||||
"""Create directories under ~."""
|
||||
@@ -1412,7 +1385,7 @@ def get_site_dirs():
|
||||
os.path.join(
|
||||
prefix,
|
||||
"lib",
|
||||
"python" + sys.version[:3],
|
||||
"python{}.{}".format(*sys.version_info),
|
||||
"site-packages",
|
||||
),
|
||||
os.path.join(prefix, "lib", "site-python"),
|
||||
@@ -1433,7 +1406,7 @@ def get_site_dirs():
|
||||
home,
|
||||
'Library',
|
||||
'Python',
|
||||
sys.version[:3],
|
||||
'{}.{}'.format(*sys.version_info),
|
||||
'site-packages',
|
||||
)
|
||||
sitedirs.append(home_sp)
|
||||
@@ -1562,7 +1535,7 @@ def get_exe_prefixes(exe_filename):
|
||||
continue
|
||||
if parts[0].upper() in ('PURELIB', 'PLATLIB'):
|
||||
contents = z.read(name)
|
||||
if six.PY3:
|
||||
if not six.PY2:
|
||||
contents = contents.decode()
|
||||
for pth in yield_lines(contents):
|
||||
pth = pth.strip().replace('\\', '/')
|
||||
@@ -2063,17 +2036,38 @@ class ScriptWriter:
|
||||
|
||||
template = textwrap.dedent(r"""
|
||||
# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r
|
||||
__requires__ = %(spec)r
|
||||
import re
|
||||
import sys
|
||||
from pkg_resources import load_entry_point
|
||||
|
||||
# for compatibility with easy_install; see #2198
|
||||
__requires__ = %(spec)r
|
||||
|
||||
try:
|
||||
from importlib.metadata import distribution
|
||||
except ImportError:
|
||||
try:
|
||||
from importlib_metadata import distribution
|
||||
except ImportError:
|
||||
from pkg_resources import load_entry_point
|
||||
|
||||
|
||||
def importlib_load_entry_point(spec, group, name):
|
||||
dist_name, _, _ = spec.partition('==')
|
||||
matches = (
|
||||
entry_point
|
||||
for entry_point in distribution(dist_name).entry_points
|
||||
if entry_point.group == group and entry_point.name == name
|
||||
)
|
||||
return next(matches).load()
|
||||
|
||||
|
||||
globals().setdefault('load_entry_point', importlib_load_entry_point)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
||||
sys.exit(
|
||||
load_entry_point(%(spec)r, %(group)r, %(name)r)()
|
||||
)
|
||||
""").lstrip()
|
||||
sys.exit(load_entry_point(%(spec)r, %(group)r, %(name)r)())
|
||||
""").lstrip()
|
||||
|
||||
command_spec_class = CommandSpec
|
||||
|
||||
@@ -2088,7 +2082,8 @@ class ScriptWriter:
|
||||
@classmethod
|
||||
def get_script_header(cls, script_text, executable=None, wininst=False):
|
||||
# for backward compatibility
|
||||
warnings.warn("Use get_header", EasyInstallDeprecationWarning, stacklevel=2)
|
||||
warnings.warn(
|
||||
"Use get_header", EasyInstallDeprecationWarning, stacklevel=2)
|
||||
if wininst:
|
||||
executable = "python.exe"
|
||||
return cls.get_header(script_text, executable)
|
||||
@@ -2337,6 +2332,8 @@ def _patch_usage():
|
||||
finally:
|
||||
distutils.core.gen_usage = saved
|
||||
|
||||
|
||||
class EasyInstallDeprecationWarning(SetuptoolsDeprecationWarning):
|
||||
"""Class for warning about deprecations in EasyInstall in SetupTools. Not ignored by default, unlike DeprecationWarning."""
|
||||
|
||||
"""
|
||||
Warning for EasyInstall deprecations, bypassing suppression.
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user