DiamondLightSource / SuRVoS

(Su)per (R)egion (Vo)lume (S)egmentaton workbench
Apache License 2.0
25 stars 5 forks source link

SuRVoS won't compile on Windows -- Check windows compatibility #22

Closed imaluengo closed 6 years ago

bpavie commented 7 years ago

I have the same issue on windows, can't compile it It come from the build.py file that is not made to work fro windows, e.g.; nvcc_path = os.path.join(home, 'bin', 'nvcc') should be nvcc_path = os.path.join(home, 'bin', 'nvcc.exe')

'lib64': os.path.join(home, 'lib64') should be 'lib64': os.path.join(home, 'lib','x64')

An others, so at then end I still have errors, the last one being:

(C:\Program Files\Anaconda3) C:\test\SuRVoS>python setup.p
y build_ext -i
Appending survos.lib configuration to survos
Ignoring attempt to set 'name' (from 'survos' to 'survos.lib')
Appending survos configuration to
Ignoring attempt to set 'name' (from '' to 'survos')
running build_ext
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from
distutils
Warning: Inheriting attribute 'cmdclass'={'build_ext': <class 'survos.build.cust
om_build_ext'>} from 'survos'Traceback (most recent call last):
  File "setup.py", line 19, in <module>
    setup(**config)
  File "C:\Program Files\Anaconda3\lib\site-packages\numpy\distutils\core.py", l
ine 169, in setup
    return old_setup(**new_attr)
  File "C:\Program Files\Anaconda3\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Program Files\Anaconda3\lib\distutils\dist.py", line 955, in run_comm
ands
    self.run_command(cmd)
  File "C:\Program Files\Anaconda3\lib\distutils\dist.py", line 974, in run_comm
and
    cmd_obj.run()
  File "C:\Program Files\Anaconda3\lib\site-packages\Cython\Distutils\build_ext.
py", line 164, in run
    _build_ext.build_ext.run(self)
  File "C:\Program Files\Anaconda3\lib\distutils\command\build_ext.py", line 338
, in run
    self.build_extensions()
  File "C:\Users\unitadmin\bin\survos\SuRVoS\survos\build.py", line 84, in build
_extensions
    customize_compiler_for_nvcc(self.compiler)
  File "C:\Users\unitadmin\bin\survos\SuRVoS\survos\build.py", line 57, in custo
mize_compiler_for_nvcc
    default_compiler_so = self.compiler_so
AttributeError: 'MSVCCompiler' object has no attribute 'compiler_so'

Any guide on how to compile it on windows 64bits will be very helpful, I would love to test it! Benjamin

imaluengo commented 7 years ago

Hello Benjamin,

Thank you for the interest on SuRVoS. The error traceback and the changes you made to get there are really useful input.

I'm working on making the installation process compatible with windows right now. One quick solution seem to be to use MinGW32 (which I think requires 32-bit python) and then run the following command in the SuRVoS folder:

python setup.py build_ext -i -c mingw32

Which will force Windows to use MinGW compiler instead of the MSVCC built-in windows. Other options would be to install a better compiler than the window's default (such as Visual Studio C/C++ compilers).

However, I'm still working on an easy solution to make it work with the deafult windows compiler (MSVCC), as it seems that is possible since cudamat already supports it.

I'll let you know as soon as I get to a solution.

Thanks, Imanol

malcook commented 7 years ago

Hello, I similarly found and patched the issues identified by @bpavie and then tried to take your suggestion @imaluengo to try compiling with gcc under MinGW with the following failure:

python setup.py build_ext -i -c mingw32
python setup.py build_ext -i -c mingw32
Appending survos.lib configuration to survos
Ignoring attempt to set 'name' (from 'survos' to 'survos.lib')
Appending survos configuration to 
Ignoring attempt to set 'name' (from '' to 'survos')
running build_ext
Looking for python27.dll
Building import library (arch=AMD64): "C:\Program Files\Anaconda2\libs\libpython27.a" (from C:\Program Files\Anaconda2\python27.dll)
objdump.exe: C:\Program Files\Anaconda2\python27.dll: File format not recognized
Warning: Inheriting attribute 'cmdclass'={'build_ext': <class survos.build.custom_build_ext at 0x0000000003FA73A8>} from 'survos'Traceback (most recent call last):
  File "setup.py", line 19, in <module>
    setup(**config)
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\core.py", line 166, in setup
    return old_setup(**new_attr)
  File "C:\Program Files\Anaconda2\lib\distutils\core.py", line 151, in setup
    dist.run_commands()
  File "C:\Program Files\Anaconda2\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Program Files\Anaconda2\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Program Files\Anaconda2\lib\site-packages\Cython\Distutils\old_build_ext.py", line 185, in run
    _build_ext.build_ext.run(self)
  File "C:\Program Files\Anaconda2\lib\distutils\command\build_ext.py", line 308, in run
    force=self.force)
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\ccompiler.py", line 596, in new_compiler
    compiler = klass(None, dry_run, force)
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 93, in __init__
    build_import_library()
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 377, in build_import_library
    return _build_import_library_amd64()
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 399, in _build_import_library_amd64
    generate_def(dll_file, def_file)
  File "C:\Program Files\Anaconda2\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 274, in generate_def
    raise ValueError("Symbol table not found")
ValueError: Symbol table not found

I'm guessing that if I'm using MinGW perhaps I should back out of using the anaconda distribution of python and rather install it under MinGW,

Or do either of you have other suggestions?

Thanks, Malcolm

HaoWangDL commented 6 years ago

@imaluengo hello ,have you solved the problem,i have the same question,this puzzled me for a long time.thanks

srikanthnagella commented 6 years ago

Hi Hao,

I have compiled the windows version of SuRVoS. I am yet to commit back the changes to repository.

Sri

On Wed, Nov 29, 2017 at 2:23 AM, HaoWangDL notifications@github.com wrote:

@imaluengo https://github.com/imaluengo hello ,have you solved the problem,i have the same question,this puzzled me for a long time.thanks

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/DiamondLightSource/SuRVoS/issues/22#issuecomment-347731650, or mute the thread https://github.com/notifications/unsubscribe-auth/AAovcUjrvqnxha7M-JG7G40XVfA2stAXks5s7MATgaJpZM4K4Wtg .

srikanthnagella commented 6 years ago

branch pyqt5. now has updated version of survos with pyqt5 working on windows python 3.6 and linux. Windows python 2.x is not supported as cuda > 7 is not supported by VS2008.

srikanthnagella commented 6 years ago

Fixed in the #38