Main reference
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.