TomographicImaging / CIL-ASTRA

Apache License 2.0
2 stars 5 forks source link

Build issues #108

Closed gfardell closed 2 years ago

gfardell commented 2 years ago

The appears to be an issue copying CIL-ASTRA files to the correct location in the build step. This is causing the builds to currently fail on jenkins.

When built with conda-build the tests fail with:

ModuleNotFoundError: No module named 'cil.plugins.astra'

The issue appears to be with setup.py not copying the files as expected. It moves the .egg to the correct place, but this isn't extracted into cil/plugins

To recreate, create a new environment with CIL only

conda create -n test cil -c conda-forge -c intel -c ccpi
conda activate test
cd Wrappers/Python
python setup.py install
(test) tpc56154@reconvm1:~/GitHub/CIL-ASTRA/Wrappers/Python$ python setup.py install
/home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages/setuptools/dist.py:519: UserWarning: The version specified ('v21.3.0-2-g1e83d48') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
  warnings.warn(
running install
/home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages/setuptools/command/easy_install.py:160: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
running bdist_egg
/home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages/pkg_resources/__init__.py:122: PkgResourcesDeprecationWarning: v21.3.0-2-g1e83d48 is an invalid version and will not be supported in a future release
  warnings.warn(
running egg_info
creating cil_astra.egg-info
writing cil_astra.egg-info/PKG-INFO
writing dependency_links to cil_astra.egg-info/dependency_links.txt
writing top-level names to cil_astra.egg-info/top_level.txt
writing manifest file 'cil_astra.egg-info/SOURCES.txt'
reading manifest file 'cil_astra.egg-info/SOURCES.txt'
writing manifest file 'cil_astra.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/cil
creating build/lib/cil/plugins
creating build/lib/cil/plugins/astra
copying cil/plugins/astra/version.py -> build/lib/cil/plugins/astra
copying cil/plugins/astra/__init__.py -> build/lib/cil/plugins/astra
creating build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/AstraProjector3D.py -> build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/AstraProjectorMC.py -> build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/AstraProjector2D.py -> build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/__init__.py -> build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/ProjectionOperator.py -> build/lib/cil/plugins/astra/operators
copying cil/plugins/astra/operators/AstraProjector3DMC.py -> build/lib/cil/plugins/astra/operators
creating build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraBackProjector3D.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraForwardProjector2D.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraForwardProjectorMC.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/FBP_Simple.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraBackProjectorMC.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraBackProjector2D.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/FBP_Flexible.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/__init__.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/AstraForwardProjector3D.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/FDK_Flexible.py -> build/lib/cil/plugins/astra/processors
copying cil/plugins/astra/processors/FBP.py -> build/lib/cil/plugins/astra/processors
creating build/lib/cil/plugins/astra/utilities
copying cil/plugins/astra/utilities/convert_geometry_to_astra_vec_2D.py -> build/lib/cil/plugins/astra/utilities
copying cil/plugins/astra/utilities/convert_geometry_to_astra.py -> build/lib/cil/plugins/astra/utilities
copying cil/plugins/astra/utilities/__init__.py -> build/lib/cil/plugins/astra/utilities
copying cil/plugins/astra/utilities/convert_geometry_to_astra_vec_3D.py -> build/lib/cil/plugins/astra/utilities
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/cil
creating build/bdist.linux-x86_64/egg/cil/plugins
creating build/bdist.linux-x86_64/egg/cil/plugins/astra
copying build/lib/cil/plugins/astra/version.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra
creating build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/AstraProjector3D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/AstraProjectorMC.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/AstraProjector2D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/__init__.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/ProjectionOperator.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
copying build/lib/cil/plugins/astra/operators/AstraProjector3DMC.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/operators
creating build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities
copying build/lib/cil/plugins/astra/utilities/convert_geometry_to_astra_vec_2D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities
copying build/lib/cil/plugins/astra/utilities/convert_geometry_to_astra.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities
copying build/lib/cil/plugins/astra/utilities/__init__.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities
copying build/lib/cil/plugins/astra/utilities/convert_geometry_to_astra_vec_3D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities
copying build/lib/cil/plugins/astra/__init__.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra
creating build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraBackProjector3D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraForwardProjector2D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraForwardProjectorMC.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/FBP_Simple.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraBackProjectorMC.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraBackProjector2D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/FBP_Flexible.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/__init__.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/AstraForwardProjector3D.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/FDK_Flexible.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
copying build/lib/cil/plugins/astra/processors/FBP.py -> build/bdist.linux-x86_64/egg/cil/plugins/astra/processors
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/version.py to version.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/AstraProjector3D.py to AstraProjector3D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/AstraProjectorMC.py to AstraProjectorMC.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/AstraProjector2D.py to AstraProjector2D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/__init__.py to __init__.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/ProjectionOperator.py to ProjectionOperator.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/operators/AstraProjector3DMC.py to AstraProjector3DMC.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities/convert_geometry_to_astra_vec_2D.py to convert_geometry_to_astra_vec_2D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities/convert_geometry_to_astra.py to convert_geometry_to_astra.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities/__init__.py to __init__.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/utilities/convert_geometry_to_astra_vec_3D.py to convert_geometry_to_astra_vec_3D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/__init__.py to __init__.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraBackProjector3D.py to AstraBackProjector3D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraForwardProjector2D.py to AstraForwardProjector2D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraForwardProjectorMC.py to AstraForwardProjectorMC.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/FBP_Simple.py to FBP_Simple.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraBackProjectorMC.py to AstraBackProjectorMC.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraBackProjector2D.py to AstraBackProjector2D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/FBP_Flexible.py to FBP_Flexible.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/__init__.py to __init__.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/AstraForwardProjector3D.py to AstraForwardProjector3D.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/FDK_Flexible.py to FDK_Flexible.cpython-39.pyc
byte-compiling build/bdist.linux-x86_64/egg/cil/plugins/astra/processors/FBP.py to FBP.cpython-39.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying cil_astra.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cil_astra.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cil_astra.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying cil_astra.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/cil_astra-v21.3.0_2_g1e83d48-py3.9.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing cil_astra-v21.3.0_2_g1e83d48-py3.9.egg
Copying cil_astra-v21.3.0_2_g1e83d48-py3.9.egg to /home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages
Adding cil-astra v21.3.0-2-g1e83d48 to easy-install.pth file

Installed /home/tpc56154/miniconda3/envs/test/lib/python3.9/site-packages/cil_astra-v21.3.0_2_g1e83d48-py3.9.egg
Processing dependencies for cil-astra===v21.3.0-2-g1e83d48
Finished processing dependencies for cil-astra===v21.3.0-2-g1e83d48
(test) tpc56154@reconvm1:~/GitHub/CIL-ASTRA/Wrappers/Python$ ls ~/miniconda3/envs/test/lib/python3.9/site-packages/cil/plugins/
TomoPhantom.py  __init__.py  __pycache__  ccpi_regularisation  tigre

There is no cil-astra package:

ls ~/miniconda3/envs/test/lib/python3.9/site-packages/cil/plugins/
TomoPhantom.py  __init__.py  __pycache__  ccpi_regularisation  tigre
(test) tpc56154@reconvm1:~/GitHub/CIL-ASTRA/Wrappers/Python$ python
Python 3.9.10 | packaged by conda-forge | (main, Feb  1 2022, 21:24:11)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cil.plugins.astra.version
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'cil.plugins.astra'
gfardell commented 2 years ago

https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html#summary

 - The setuptools project has stopped maintaining all direct invocations of setup.py years ago, and [distutils is deprecated](https://www.python.org/dev/peps/pep-0632/). There are undoubtedly many ways that your setup.py-based system is broken today, even if it's not failing loudly or obviously.
 - Direct invocations of setup.py cannot bootstrap their own dependencies, and so some CLI is necessary for dependency management.