How to install the installation package in the form of a folder containing source files instead of .egg (zip_safe in setuptools is set to False)

Main reference

https://stackoverflow.com/questions/33014356/how-to-make-python-setup-py-install-install-source-instead-of-egg-file

Description

There are a lot of things related to source code debugging. When it comes to files installed as .egg, it is not easy to debug. I hope that after the file package is installed, all the source files are decompressed and placed in the folder.

Take this update of gluoncv to the latest installation package as an example, for example, download the latest gluoncv here,

https://github.com/dmlc/gluon-cv

After decompression, switch to the directory and use the python setup.py install command to install (mx36gpu is my mxnet environment under anaconda)

(mx36gpu) D:\mXNet\gluon-cv-master>python setup.py install

Finally, it was found that a gluoncv-0.8.0-py3.6.egg file appeared in the D:\Anaconda3\envs\mx36gpu\Lib\site-packages folder instead of a folder. So when I debug the source code, it looks very unsightly.

According to the instructions on the setuptools official website (refer to https://setuptools.readthedocs.io/en/latest/setuptools.html#setting-the-zip-safe-flag ), you must change zip_safe to False .

The contents of the modified setup.py file are as follows,

#!/usr/bin/env python
import io
import os
import re
import sys

import numpy as np

try:
    from Cython.Build import cythonize
except ImportError:
    cythonize = None
from setuptools import setup, find_packages, Extension

with_cython = False
if '--with-cython' in sys.argv:
    if not cythonize:
        print("Cython not found, please run `pip install Cython`")
        exit(1)
    with_cython = True
    sys.argv.remove('--with-cython')


def read(*names, **kwargs):
    with io.open(
            os.path.join(os.path.dirname(__file__), *names),
            encoding=kwargs.get("encoding", "utf8")
    ) as fp:
        return fp.read()


def find_version(*file_paths):
    version_file = read(*file_paths)
    version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]",
                              version_file, re.M)
    if version_match:
        return version_match.group(1)
    raise RuntimeError("Unable to find version string.")


try:
    import pypandoc

    long_description = pypandoc.convert('README.md', 'rst')
except(IOError, ImportError):
    long_description = open('README.md').read()

VERSION = find_version('gluoncv', '__init__.py')

requirements = [
    'numpy',
    'tqdm',
    'requests',
    # 'mxnet',
    'matplotlib',
    'portalocker',
    'Pillow',
    'scipy',
]
if with_cython:
    _NP_INCLUDE_DIRS = np.get_include()

    # Extension modules
    ext_modules = cythonize([
        Extension(
            name='gluoncv.nn.cython_bbox',
            sources=['gluoncv/nn/cython_bbox.pyx'],
            extra_compile_args=['-Wno-cpp', '-O3'],
            include_dirs=[_NP_INCLUDE_DIRS]),
        Extension(
            name='gluoncv.model_zoo.rcnn.rpn.cython_rpn_target',
            sources=['gluoncv/model_zoo/rcnn/rpn/cython_rpn_target.pyx'],
            extra_compile_args=['-Wno-cpp', '-O3'],
            include_dirs=[_NP_INCLUDE_DIRS]),
    ])
else:
    ext_modules = []

setup(
    # Metadata
    name='gluoncv',
    version=VERSION,
    author='Gluon CV Toolkit Contributors',
    url='https://github.com/dmlc/gluon-cv',
    description='MXNet Gluon CV Toolkit',
    long_description=long_description,
    license='Apache-2.0',

    # Package info
    packages=find_packages(exclude=('docs', 'tests', 'scripts')),
    zip_safe=False,
    include_package_data=True,
    install_requires=requirements,
    ext_modules=ext_modules
)

And then execute

(mx36gpu) D:\mXNet\gluon-cv-master>python setup.py install

In the folder of anaconda, you can find the unzipped folder of gluoncv-0.8.0-py3.6.egg.

Guess you like

Origin blog.csdn.net/tanmx219/article/details/107288708