• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python archive_util.unpack_archive函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中setuptools.archive_util.unpack_archive函数的典型用法代码示例。如果您正苦于以下问题:Python unpack_archive函数的具体用法?Python unpack_archive怎么用?Python unpack_archive使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了unpack_archive函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: download_src

    def download_src(self, url, source=None, archive=True):
        """ Download source and return path to it.

        :param url: url to source distribution
        :type url: string

        :param source_dir: source directory after unpacking (optional)
        :type source_dir: string

        :param archive: is source archive file or not
        :type archive: boolean

        :return: path to source directory
        """

        tmp_dir = tempfile.gettempdir()
        source_file = os.path.join(tmp_dir, url.split('/')[-1])
        urllib.request.urlretrieve(url, source_file)

        if source is None:
            source = source_file

        if archive:
            unpack_archive(source_file, tmp_dir)
            source = os.path.splitext(source)[0]
            if 'tar' in source:
                source = os.path.splitext(source)[0]

        return os.path.join(tmp_dir, source)
开发者ID:tazjel,项目名称:envin,代码行数:29,代码来源:installer.py


示例2: local_distribution

 def local_distribution(self):
     if self._local_dist is None:
         ensure_directory(os.path.join(self.tmpdir, "dummy"))
         info("Fetching %s from %s..." % (str(self.distribution),
             self.location))
         dist = self.repository.environment.fetch_distribution(self.requirement,
             self.tmpdir, source=self.source, develop_ok=self.develop)
         location = dist.location
         distros = list(find_distributions(location))
         if distros:
             self._local_dist = distros[0]
         elif os.path.isfile(location) and os.path.splitext(location) != \
                 ".py":
             # try to unpack the file
             unpack_dir = os.path.join(self.tmpdir, "unpack")
             info("Unpacking to %s..." % unpack_dir)
             unpack_archive(location, unpack_dir)
             distros = list(find_distributions(unpack_dir))
             if distros:
                 self._local_dist = distros[0]
             else:
                 for path in glob(os.path.join(unpack_dir, "*")):
                     distros = list(find_distributions(path))
                     if distros:
                         self._local_dist = distros[0]
                         break
                 else:
                     self._local_dist = Distribution.from_filename(location)
     return self._local_dist
开发者ID:pombredanne,项目名称:ensetuptools,代码行数:29,代码来源:package.py


示例3: _get_new

 def _get_new(self, allow_redirects=True, chunk_size=512):
     """Retrieves the new archive and extracts it to self.updatedir."""
     self.log.info("Retrieving new version")
     newurl = self.url+self.newfiles
     # Get new files
     http_get = requests.get(newurl, stream=True,
                             allow_redirects=allow_redirects)
     http_get.raise_for_status()
     with open(self.newfiles, 'wb') as filehandle:
         for chunk in http_get.iter_content(chunk_size=chunk_size):
             if chunk:
                 filehandle.write(chunk)
     # Unpack archive and remove it after extraction
     try:
         self.log.info("Unpacking downloaded archive")
         unpack_archive(self.newfiles, self.updatedir)
     except UnrecognizedFormat:
         self.log.error("Retrieved version archive is invalid!\n"
                        "Please contact the software authors.\n"
                        "Please include the invalid archive "
                        "in a bug report.")
         os.rename(self.newfiles,self.newfiles+".dump")
     else:
         # Remove archive only if unpack operation succeeded
         self.log.info("Removing archive after extraction")
         os.remove(self.newfiles)
         # Signal that update is ready
         self.log.debug("Creating downloaded file marker")
         open(self.queue_replace,"w").close()
开发者ID:rlee287,项目名称:pyautoupdate,代码行数:29,代码来源:launcher.py


示例4: extract_gz

    def extract_gz(self, archive_path,
                   archivedir_write_path,
                   file_name=None,
                   open_archive_file=None,
                   archive=None):
        """Extract gz files.

        Extracts a given file name or all the files in the gz.
        """
        if file_name:
            open_archive_file = gzip.open(archive_path, 'r')
            file_obj = open_archive_file
            open_object = False
            self.write_fileobject(archivedir_write_path,
                                  file_name,
                                  file_obj=open_archive_file,
                                  open_object=False)
            if 'archive' in locals() and archive:
                archive.close()
            return [file_name]
        files_before = set(walk_relative_path(archivedir_write_path))
        archive_util.unpack_archive(archive_path, archivedir_write_path)
        files_after = set(walk_relative_path(archivedir_write_path))
        unpacked_files = files_after - files_before
        return list(unpacked_files)
开发者ID:KristinaRiemer,项目名称:retriever,代码行数:25,代码来源:engine.py


示例5: get_filelist

 def get_filelist(self):
     '''
     Unpack the archive if it is an archive, and return a list of 
     file names that should be examined by OGR to determine if they are
     OGR supported file types.
     
     Cache the result to speed up subsequent calls.
     '''
     if not hasattr(self, '_files'):
         name, extension=os.path.splitext(self.filename)
         # only handle a few types, since some of the others might mess 
         # up some processing...like xlsx (which this will unpack.)
         logger.debug('Extension is %s', extension)
         if extension.lower() in ('.zip','.gz','.tgz'):
             try:
                 # Ensure that the files are output in the working dir, and 
                 # subdirectories are omitted (so it's a flat dir structure)
                 archive_util.unpack_archive(self.filename, self.working_dir,
                                             progress_filter=self._progress_filter)
                 logger.debug('Unpacked archive %s to %s', self.filename, 
                              self.working_dir)
                 files=[fn for fn in map(lambda dir: os.path.join(self.working_dir, 
                                                                  dir),
                                         os.listdir(self.working_dir)) 
                                         if not os.path.isdir(fn)]
                 self._files=files
             except archive_util.UnrecognizedFormat, e:
                 logger.debug('Specified file (%s) is not a recognized archive',
                              self.filename)
                 self._files=[self.filename,]
         else:
             self._files=[self.filename,]
开发者ID:bhargavasana,项目名称:nmtk,代码行数:32,代码来源:loaders.py


示例6: _extract_file_to_file_server

 def _extract_file_to_file_server(cls, file_server_root, archive_target_path):
     # extract application to file server
     tempdir = tempfile.mkdtemp("-blueprint-submit")
     try:
         try:
             archive_util.unpack_archive(archive_target_path, tempdir)
         except archive_util.UnrecognizedFormat:
             raise manager_exceptions.BadParametersError(
                 "Blueprint archive is of an unrecognized format. "
                 "Supported formats are: {0}".format(SUPPORTED_ARCHIVE_TYPES)
             )
         archive_file_list = os.listdir(tempdir)
         if len(archive_file_list) != 1 or not path.isdir(path.join(tempdir, archive_file_list[0])):
             raise manager_exceptions.BadParametersError("archive must contain exactly 1 directory")
         application_dir_base_name = archive_file_list[0]
         # generating temporary unique name for app dir, to allow multiple
         # uploads of apps with the same name (as it appears in the file
         # system, not the app name field inside the blueprint.
         # the latter is guaranteed to be unique).
         generated_app_dir_name = "{0}-{1}".format(application_dir_base_name, uuid.uuid4())
         temp_application_dir = path.join(tempdir, application_dir_base_name)
         temp_application_target_dir = path.join(tempdir, generated_app_dir_name)
         shutil.move(temp_application_dir, temp_application_target_dir)
         shutil.move(temp_application_target_dir, file_server_root)
         return generated_app_dir_name
     finally:
         shutil.rmtree(tempdir)
开发者ID:pkdevboxy,项目名称:cloudify-manager,代码行数:27,代码来源:resources.py


示例7: _unpack_eggs

def _unpack_eggs(egg_list):
    import os
    for pkg in egg_list:
        import pkg_resources
        eggs = pkg_resources.require(pkg)
        from setuptools.archive_util import unpack_archive
        for egg in eggs:
           if os.path.isdir(egg.location):
               sys.path.insert(0, egg.location)
               continue
           unpack_archive(egg.location, os.path.abspath(os.path.dirname(egg.location)))
开发者ID:wemomedia,项目名称:wevr-awsebcli,代码行数:11,代码来源:setup.py


示例8: copytree

 def copytree(self):
     # Copy the .egg-info tree to site-packages
     def skimmer(src,dst):
         # filter out source-control directories; note that 'src' is always
         # a '/'-separated path, regardless of platform.  'dst' is a
         # platform-specific path.
         for skip in '.svn/','CVS/':
             if src.startswith(skip) or '/'+skip in src:
                 return None
         self.outputs.append(dst)
         log.debug("Copying %s to %s", src, dst)
         return dst
     unpack_archive(self.source, self.target, skimmer)
开发者ID:0jpq0,项目名称:kbengine,代码行数:13,代码来源:install_egg_info.py


示例9: checkout_extension

def checkout_extension(name):
    log('Downloading extension %s to temporary folder', name)
    root = os.path.join(tdir, name)
    os.mkdir(root)
    checkout_path = PackageIndex().download(name, root)

    unpack_archive(checkout_path, root)
    path = None
    for fn in os.listdir(root):
        path = os.path.join(root, fn)
        if os.path.isdir(path):
            break
    log('Downloaded to %s', path)
    return path
开发者ID:0x78kiki,项目名称:flask,代码行数:14,代码来源:flaskext_tester.py


示例10: cache_package

def cache_package(spec, own_url):
    try:
        spec = Requirement.parse(spec)

    except ValueError:
        raise ArgumentError("Not a URL, existing file, or requirement spec: %r"
                                                                      % (spec,))

    try:
        # download and unpack source package
        path = tempfile.mkdtemp('.spynepi')
        logger.info("Downloading %r" % spec)
        dist = PackageIndex().fetch_distribution(spec, path, force_scan=True, source=True)
        archive_path = dist.location
        logger.info("Unpacking %r" % archive_path)
        unpack_archive(dist.location, path)

        # generate pypirc if possible
        if os.environ.has_key('HOME'):
            _generate_pypirc(own_url)
        else: # FIXME: ??? No idea. Hopefully setuptools knows better.
            pass # raise NotImplementedError("$HOME not defined, .pypirc not found.")

        # find setup.py in package. plagiarized from setuptools.
        setups = glob(os.path.join(path, '*', 'setup.py'))
        if not setups:
            raise ValidationError(
                "Couldn't find a setup script in %r editable distribution: %r" %
                                    (spec, os.path.join(path,'*', 'setup.py'))
            )

        if len(setups)>1:
            raise ValidationError(
                "Multiple setup scripts found in %r editable distribution: %r" %
                                    (spec, setups)
            )

        # self-register the package.
        lib_dir = os.path.dirname(setups[0])
        command = ["python", "setup.py", "register", "-r", REPO_NAME]
        logger.info('calling %r', command)
        subprocess.call(command, cwd=lib_dir, stdout=sys.stdout)

        # self-upload the package
        command = ["python", "-m", "spynepi.util.pypi.upload", archive_path]
        logger.info('calling %r', command)
        subprocess.call(command, cwd=lib_dir, stdin=sys.stdin, stdout=sys.stdout)

    finally:
        shutil.rmtree(path)
开发者ID:arskom,项目名称:spynepi,代码行数:50,代码来源:__init__.py


示例11: unpackEgg

def unpackEgg(modulo):
    eggs = pkg_resources.require(modulo)
    for egg in eggs:
        if os.path.isdir(egg.location):
            sys.path.insert(0, egg.location)
            continue
        unpack_archive(egg.location, ".")
    eggpacks = set()
    eggspth = open("./eggs.pth", "w")
    for egg in eggs:
        eggspth.write(os.path.basename(egg.location))
        eggspth.write("\n")
        eggpacks.update(egg.get_metadata_lines("top_level.txt"))
    eggspth.close()

    eggpacks.clear()
开发者ID:citizenTFA,项目名称:DDEXUI,代码行数:16,代码来源:unpackEgg.py


示例12: copytree

    def copytree(self):
        # Copy the .egg-info tree to site-packages
        def skimmer(src, dst):
            # filter out source-control directories; note that 'src' is always
            # a '/'-separated path, regardless of platform.  'dst' is a
            # platform-specific path.
            for skip in ".svn/", "CVS/":
                if src.startswith(skip) or "/" + skip in src:
                    return None
            if self.install_layout and self.install_layout in ["deb"] and src.startswith("SOURCES.txt"):
                log.info("Skipping SOURCES.txt")
                return None
            self.outputs.append(dst)
            log.debug("Copying %s to %s", src, dst)
            return dst

        unpack_archive(self.source, self.target, skimmer)
开发者ID:LewkowskiArkadiusz,项目名称:magisterka,代码行数:17,代码来源:install_egg_info.py


示例13: extract_blueprint_archive_to_mgr

def extract_blueprint_archive_to_mgr(archive_path, destination_root):
    """
    Extracting a package.

    :param destination_root: the root destination for the unzipped archive
    :param archive_path: the archive path
    :return: the full path for the extracted archive
    """
    # Importing this archives in the global scope causes import loop
    from manager_rest.resources import SUPPORTED_ARCHIVE_TYPES
    # extract application to file server
    tempdir = tempfile.mkdtemp('-blueprint-submit')
    try:
        try:
            archive_util.unpack_archive(archive_path, tempdir)
        except archive_util.UnrecognizedFormat:
            raise manager_exceptions.BadParametersError(
                    'Blueprint archive is of an unrecognized format. '
                    'Supported formats are: {0}'.format(
                            SUPPORTED_ARCHIVE_TYPES))
        archive_file_list = listdir(tempdir)
        if len(archive_file_list) != 1 or not path.isdir(
                path.join(tempdir, archive_file_list[0])):
            raise manager_exceptions.BadParametersError(
                    'archive must contain exactly 1 directory')
        application_dir_base_name = archive_file_list[0]
        # generating temporary unique name for app dir, to allow multiple
        # uploads of apps with the same name (as it appears in the file
        # system, not the app name field inside the blueprint.
        # the latter is guaranteed to be unique).
        generated_app_dir_name = '{0}-{1}'.format(
                application_dir_base_name, uuid.uuid4())
        temp_application_dir = path.join(tempdir,
                                         application_dir_base_name)
        temp_application_target_dir = path.join(tempdir,
                                                generated_app_dir_name)
        shutil.move(temp_application_dir, temp_application_target_dir)
        shutil.move(temp_application_target_dir, destination_root)
        return generated_app_dir_name
    finally:
        shutil.rmtree(tempdir)
开发者ID:GigaSpaces-ProfessionalServices,项目名称:cloudify-manager,代码行数:41,代码来源:utils.py


示例14: fixed_unpack_and_compile

def fixed_unpack_and_compile(self, egg_path, destination):
    from setuptools.archive_util import unpack_archive
    to_compile = []; to_chmod = []

    def pf(src,dst):
        if dst.endswith('.py') and not src.startswith('EGG-INFO/'):
            to_compile.append(dst)
            to_chmod.append(dst)
        elif dst.endswith('.dll') or dst.endswith('.so'):
            to_chmod.append(dst)
        self.unpack_progress(src,dst)
        return not self.dry_run and dst or None

    unpack_archive(egg_path, destination, pf)
    self.byte_compile(to_compile)
    if not self.dry_run:
        for f in to_chmod:
#           mode = ((os.stat(f)[stat.ST_MODE]) | 0555) & 07755
            mode = ((os.stat(f)[stat.ST_MODE]) | 0444) & 07755
            chmod(f, mode)

    to_compile = []; to_chmod = []
    return
开发者ID:danse-inelastic,项目名称:inelastic-svn,代码行数:23,代码来源:fix_setuptools_chmod.py


示例15: update_self

def update_self():
	if len(sys.argv) > 1 and sys.argv[1] == '--updated':
		del sys.argv[1]
		return

	from setuptools.package_index import PackageIndex
	from setuptools.archive_util import unpack_archive

	tmpdir = tempfile.mkdtemp(prefix=TEMP_DIR_PREFIX)
	print('Downloading %s' % DEFAULT_URL)
	download = PackageIndex().download(DEFAULT_URL, tmpdir)
	print('Downloaded.')
	unpack_archive(download, tmpdir)
	unpack_dir = os.path.join(tmpdir, PACK_FILE_ROOT_DIR)
	move_files(unpack_dir, os.curdir,
		shutil.ignore_patterns('.*', '*.sln', '*.pyproj', '*.sample'))
	shutil.rmtree(tmpdir)
	print('Self updated.')

	if len(sys.argv) == 1:
		# only update self.
		sys.exit(0)
	else:
		restart(with_virtualenv=False)
开发者ID:SunriseChen,项目名称:BuildLibrary,代码行数:24,代码来源:lib_install.py


示例16: install_eggs

    def install_eggs(self, spec, dist_filename, tmpdir):
        # Anything else, try to extract and build
        setup_base = tmpdir
        if os.path.isfile(dist_filename) and not dist_filename.endswith('.py'):
            unpack_archive(dist_filename, tmpdir, self.unpack_progress)
        elif os.path.isdir(dist_filename):
            setup_base = os.path.abspath(dist_filename)

        # Find the setup.py file
        setup_script = os.path.join(setup_base, 'setup.py')

        if not os.path.exists(setup_script):
            setups = glob(os.path.join(setup_base, '*', 'setup.py'))
            if not setups:
                raise DistutilsError(
                    "Couldn't find a setup script in %s" % os.path.abspath(dist_filename)
                )
            if len(setups)>1:
                raise DistutilsError(
                    "Multiple setup scripts in %s" % os.path.abspath(dist_filename)
                )
            setup_script = setups[0]

        return self.build_and_install(setup_script, setup_base)
开发者ID:carlitux,项目名称:gaebuild,代码行数:24,代码来源:dist_installer.py


示例17: unzip

def unzip(src, dest, zip_ext=None, create_own_folder=False, tree=False):
    """Extract all content from an archive file to a destination folder.

    Arguments
    ---------
    src: str
        Absolute path to the archive file ('/path/to/archive_filename.zip')
    dest: str
        Asolute path to extract all content to ('/path/to/extract/')

    Keyword Arguments
    -----------------
    zip_ext: list
        Valid zip file extensions. Default: ['.zip', '.gz']
    create_own_folder: bool
        Create a sub-folder in 'dest' with the archive file name if True
        ('/path/to/extract/archive_filename/'). Default: False
    tree: bool
        Extract archive files within archive files (into their own
        sub-directory) if True. Default: False
    """
    zip_ext = list(zip_ext or ['.zip', '.gz'])
    filename, ext = os.path.splitext(os.path.basename(src))
    if ext not in zip_ext:
        raise ValueError("Invalid archive file extension {}: {}".format(ext, src))
    if not check_directory(dest, write=True, execute=True):
        raise OSError("Directory not found or unwritable: {}".format(dest))

    if create_own_folder:
        # double splitext for .tar.gz
        fname, ext = os.path.splitext(os.path.basename(filename))
        if ext == '.tar':
            filename = fname
        dest = os.path.join(dest, filename)
        if not os.path.isdir(dest):
            os.makedirs(dest)

    unpack_archive(src, dest, drivers=(unpack_zipfile, unpack_tarfile))

    # extract flat, don't extract archive files within archive files
    if not tree:
        return

    def find_archive_files(skip):
        found = []
        # find archive files in dest that are not in skip
        for root, _, filenames in os.walk(dest):
            for basename in filenames:
                src_file = os.path.join(root, basename)
                _, ext = os.path.splitext(basename)
                if ext in zip_ext and src_file not in skip:
                    found.append(src_file)
        return found

    skip = []
    new_files = find_archive_files(skip)
    # keep walking dest until no new archive files are found
    while new_files:
        # unzip (flat) new archive files found in dest
        for src_file in new_files:
            dest_path = os.path.split(src_file)[0]
            unzip(
                src_file,
                dest_path,
                zip_ext=zip_ext,
                create_own_folder=True,
                tree=False
            )
            skip.append(src_file)
        new_files = find_archive_files(skip)
开发者ID:jhamrick,项目名称:nbgrader,代码行数:70,代码来源:utils.py


示例18: copytree

		for p in m.__path__[1:]:
		    modulefinder.AddPackagePath(extra, p)
	except ImportError:
	    # no build path setup, no worries.
	    pass

	# hack to include simplejson egg in the build
	if using_simplejson:
		import pkg_resources
		eggs = pkg_resources.require("simplejson")
		from setuptools.archive_util import unpack_archive
		for egg in eggs:
			if os.path.isdir(egg.location):
				copytree(egg.location, ".")
			else:
				unpack_archive(egg.location, ".")
				rmtree("EGG-INFO")
	
	# windows specific options
	options = {
		"script": app + ".py",
		"icon_resources": [(1, os.path.join("resources", "main.ico"))],
	}
	resources = ['resources',]
	
	# horrible monkey patch to make sdl mixer include work (say what?)
	# http://www.python-forum.org/pythonforum/viewtopic.php?f=3&t=19455&start=0
	origIsSystemDLL = py2exe.build_exe.isSystemDLL
	def isSystemDLL(pathname):
	        if os.path.basename(pathname).lower() in ("libogg-0.dll", "sdl_ttf.dll"):
	                return 0
开发者ID:chr15m,项目名称:Infinite8BitPlatformer,代码行数:31,代码来源:build.py


示例19: test_unicode_files

def test_unicode_files(tarfile_with_unicode, tmpdir):
    target = tmpdir / 'out'
    archive_util.unpack_archive(tarfile_with_unicode, six.text_type(target))
开发者ID:sileht,项目名称:setuptools,代码行数:3,代码来源:test_archive_util.py


示例20: unpack_archive

    # cx_Freeze can't handle 3rd-party packages packed in .egg files, so we have to extract them for it
    dependency_eggs_to_unpack = [
        'uavcan',
        'qtpy',
        'qtconsole',
    ]
    unpacked_eggs_dir = os.path.join('build', 'hatched_eggs')
    sys.path.insert(0, unpacked_eggs_dir)
    try:
        shutil.rmtree(unpacked_eggs_dir)
    except Exception:
        pass
    for dep in dependency_eggs_to_unpack:
        for egg in pkg_resources.require(dep):
            if not os.path.isdir(egg.location):
                unpack_archive(egg.location, unpacked_eggs_dir)

    import qtawesome
    import qtconsole
    import PyQt5
    import zmq
    import pygments
    import IPython
    import ipykernel
    import jupyter_client
    import traitlets
    import numpy

    # Oh, Windows, never change.
    missing_dlls = glob.glob(os.path.join(os.path.dirname(numpy.core.__file__), '*.dll'))
    print('Missing DLL:', missing_dlls)
开发者ID:UAVCAN,项目名称:gui_tool,代码行数:31,代码来源:setup.py



注:本文中的setuptools.archive_util.unpack_archive函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python bdist_egg.run函数代码示例发布时间:2022-05-27
下一篇:
Python setuptools.Extension类代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap