Tôi đang cố gắng cài đặt một thư viện bên ngoài cho PyAstronomy bằng pip:
pip install PyAstronomy_ext
Tôi làm điều này thông qua dấu nhắc lệnh Anaconda. Lần đầu tiên tôi chạy lệnh, các lỗi sau xuất hiện:
building 'PyAstronomy_ext.forTrans.occultnl' extension
error: extension 'PyAstronomy_ext.forTrans.occultnl' has Fortran sources but no Fortran compiler found
----------------------------------------
Failed building wheel for PyAstronomy-ext
và
Command "c:\users\matte\anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\matte\\AppData\\Local\\Temp\\pip-install-5pkiwi34\\PyAstronomy-ext\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\matte\AppData\Local\Temp\pip-record-bok3jklv\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\matte\AppData\Local\Temp\pip-install-5pkiwi34\PyAstronomy-ext\
Vì vậy, tôi đã kiểm tra trên internet và tìm thấy chủ đề này . Tôi đã cài đặt MinGW và tải xuống tất cả các gói liên quan đến Fortran, và để chắc chắn rằng tôi cũng đã viết một kịch bản thử nghiệm và biên dịch nó bằng gFortran, và nó hoạt động tốt.
Khi tôi cố chạy lại cài đặt, các lỗi tương tự xuất hiện.
Câu trả lời cũng đề cập đến điều này:
Sau khi cài đặt, thêm đường dẫn đến nhị phân của nó vào hệ thống PATH.
nhưng tôi không thể hiểu ý nghĩa của nó, tôi đã thử chạy lệnh cài đặt từ đó C:\MinGW\bin
nhưng vẫn xảy ra lỗi tương tự.
Nếu bạn cần toàn bộ hội thoại bàn điều khiển có lỗi:
Collecting PyAstronomy_ext
Using cached https://files.pythonhosted.org/packages/32/11/27b1fee690d7d5801580da2c25145a6fcce3ad3d0a1b8c41de09d5615825/PyAstronomy_ext-1.tar.gz
Requirement already satisfied: numpy in c:\users\matte\anaconda3\lib\site-packages (from PyAstronomy_ext) (1.16.0)
Requirement already satisfied: six in c:\users\matte\anaconda3\lib\site-packages (from PyAstronomy_ext) (1.11.0)
Building wheels for collected packages: PyAstronomy-ext
Building wheel for PyAstronomy-ext (setup.py) ... error
Complete output from command c:\users\matte\anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\matte\\AppData\\Local\\Temp\\pip-install-cg99ug7_\\PyAstronomy-ext\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d C:\Users\matte\AppData\Local\Temp\pip-wheel-0gj25_97 --python-tag cp36:
running bdist_wheel
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "PyAstronomy_ext.forTrans.occultnl" sources
f2py options: []
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\fortranobject.c' to sources.
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans' to include_dirs.
building extension "PyAstronomy_ext.forTrans.occultquad" sources
f2py options: []
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\fortranobject.c' to sources.
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans' to include_dirs.
adding 'build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\occultquad-f2pywrappers.f' to sources.
build_src: building npy-pkg config files
running build_py
creating build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\PyAstronomy_ext
copying PyAstronomy_ext\__init__.py -> build\lib.win-amd64-3.6\PyAstronomy_ext
creating build\lib.win-amd64-3.6\PyAstronomy_ext\forTrans
copying PyAstronomy_ext\forTrans\__init__.py -> build\lib.win-amd64-3.6\PyAstronomy_ext\forTrans
running build_ext
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
customize MSVCCompiler
customize MSVCCompiler using build_ext
get_default_fcompiler: matching types: '['gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95', 'intelvem', 'intelem', 'flang']'
customize GnuFCompiler
Could not locate executable g77
Could not locate executable f77
customize IntelVisualFCompiler
Could not locate executable ifort
Could not locate executable ifl
customize AbsoftFCompiler
Could not locate executable f90
customize CompaqVisualFCompiler
Could not locate executable DF
customize IntelItaniumVisualFCompiler
Could not locate executable efl
customize Gnu95FCompiler
Could not locate executable gfortran
Could not locate executable f95
customize G95FCompiler
Could not locate executable g95
customize IntelEM64VisualFCompiler
customize IntelEM64TFCompiler
Could not locate executable efort
Could not locate executable efc
customize PGroupFlangCompiler
Could not locate executable flang
don't know how to compile Fortran code on platform 'nt'
warning: build_ext: f77_compiler=None is not available.
building 'PyAstronomy_ext.forTrans.occultnl' extension
error: extension 'PyAstronomy_ext.forTrans.occultnl' has Fortran sources but no Fortran compiler found
----------------------------------------
Failed building wheel for PyAstronomy-ext
Running setup.py clean for PyAstronomy-ext
Failed to build PyAstronomy-ext
Installing collected packages: PyAstronomy-ext
Running setup.py install for PyAstronomy-ext ... error
Complete output from command c:\users\matte\anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\matte\\AppData\\Local\\Temp\\pip-install-cg99ug7_\\PyAstronomy-ext\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\matte\AppData\Local\Temp\pip-record-5q39xvki\install-record.txt --single-version-externally-managed --compile:
running install
running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "PyAstronomy_ext.forTrans.occultnl" sources
f2py options: []
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\fortranobject.c' to sources.
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans' to include_dirs.
building extension "PyAstronomy_ext.forTrans.occultquad" sources
f2py options: []
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\fortranobject.c' to sources.
adding 'build\src.win-amd64-3.6\build\src.win-amd64-3.6\PyAstronomy_ext\forTrans' to include_dirs.
adding 'build\src.win-amd64-3.6\PyAstronomy_ext\forTrans\occultquad-f2pywrappers.f' to sources.
build_src: building npy-pkg config files
running build_py
creating build\lib.win-amd64-3.6
creating build\lib.win-amd64-3.6\PyAstronomy_ext
copying PyAstronomy_ext\__init__.py -> build\lib.win-amd64-3.6\PyAstronomy_ext
creating build\lib.win-amd64-3.6\PyAstronomy_ext\forTrans
copying PyAstronomy_ext\forTrans\__init__.py -> build\lib.win-amd64-3.6\PyAstronomy_ext\forTrans
running build_ext
No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
customize MSVCCompiler
customize MSVCCompiler using build_ext
get_default_fcompiler: matching types: '['gnu', 'intelv', 'absoft', 'compaqv', 'intelev', 'gnu95', 'g95', 'intelvem', 'intelem', 'flang']'
customize GnuFCompiler
Could not locate executable g77
Could not locate executable f77
customize IntelVisualFCompiler
Could not locate executable ifort
Could not locate executable ifl
customize AbsoftFCompiler
Could not locate executable f90
customize CompaqVisualFCompiler
Could not locate executable DF
customize IntelItaniumVisualFCompiler
Could not locate executable efl
customize Gnu95FCompiler
Could not locate executable gfortran
Could not locate executable f95
customize G95FCompiler
Could not locate executable g95
customize IntelEM64VisualFCompiler
customize IntelEM64TFCompiler
Could not locate executable efort
Could not locate executable efc
customize PGroupFlangCompiler
Could not locate executable flang
don't know how to compile Fortran code on platform 'nt'
warning: build_ext: f77_compiler=None is not available.
building 'PyAstronomy_ext.forTrans.occultnl' extension
error: extension 'PyAstronomy_ext.forTrans.occultnl' has Fortran sources but no Fortran compiler found
----------------------------------------
Command "c:\users\matte\anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\matte\\AppData\\Local\\Temp\\pip-install-cg99ug7_\\PyAstronomy-ext\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\matte\AppData\Local\Temp\pip-record-5q39xvki\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\matte\AppData\Local\Temp\pip-install-cg99ug7_\PyAstronomy-ext\
EDIT: Tôi đã có thể giải quyết vấn đề bằng cách thực hiện một số hoạt động đào, tôi đã phải viết một distutils.cfg
tập tin C:\...\Anaconda3\Lib\distutils
với nội dung sau:
[build]
compiler=mingw32
Và sau đó chạy các lệnh sau từ dấu nhắc Anaconda:
conda install libpython
conda install -c msys2 m2w64-toolchain
Sau đó pip install PyAstronomy_ext
làm việc hoàn hảo.
Tôi sẽ để nó ở đây trong trường hợp bất cứ ai gặp phải vấn đề này.