2016-11-22 5 views
2

Может кто-то определить, где я делаю неправильно, ПОЖАЛУЙСТА? Я так измучен. Я установил MinGW 4.7, python2.7.8, numpy 1.7.1 и scipy0.13.2 в среду Anaconda (32 бит) в Windows7.
Кроме того, для пользователей переменных окружения, я установилне может найти решение для запуска f2py правильно на моем компьютере с Windows 7

C_INCLUDE_PATH: D: \ Anaconda2 \ envs \ arc103 \ MinGW \ i686-w64-mingw32 \ включают

Путь (переменная пользователя): C: \ Program Files (x86) \ Microsoft VS код \ Bin; D: \ Anaconda2 \ Library \ Bin; D: \ Anaconda2 \ envs \ arc103 \ MinGW \ бин

Привязав следующие команды в Anaconda Prompt

  1. "f2py -c найдено --help-fcompiler "выходы" ... Fortran Составители: --fcompiler = gnu95 ГНУ Fortran 95 компилятор (4.7.0) ....»

  2. "f2py -c --help-компилятор" выходы «Список доступных компиляторов: ...», а не только составленные компиляторы.

Запуск "f2py -c -m fib1.f fib1" в соответствии с "NumPy v1.12.dev0 Руководство" дает мне много ошибок, как показано ниже:

D:\Anaconda2\envs\arc103\Scripts\gfortran.bat -Wall -Wall -shared c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-.7\fib1module.oc:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fortranobject.o c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\fib1.o -Ld:\anaconda2\envs\arc103\mingw\lib\gcc\i686-w64-mingw32\4.7.0 -LD:\Anaconda2\envs\arc103\libs -LD:\Anaconda2\envs\arc103\PCbuild -lpython27 -lgfortran -o .\fib1.pyd 

c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fib1module.o:fib1module.c:(.text+0x35): undefined reference to `__imp__PyNumber_Int' 
c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fib1module.o:fib1module.c:(.text+0x68): undefined reference to `__imp__PyComplex_Type' 
c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fib1module.o:fib1module.c:(.text+0x79): undefined reference to `__imp__PyType_IsSubtype' 
c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fib1module.o:fib1module.c:(.text+0x93): undefined reference to `__imp__PyErr_Occurred' 

... (Thousands of "undefined reference to" errors I didn't put it here) ... 

collect2.exe: error: ld returned 1 exit statuserror: Command "D:\Anaconda2\envs\arc103\Scripts\gfortran.bat -Wall -Wall -shared c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fib1module.o 
c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\users\dkim1\appdata\local\temp\tmpvyedhg\src.win32-2.7\fortranobject.o 
c:\users\dkim1\appdata\local\temp\tmpvyedhg\Release\fib1.o -Ld:\anaconda2\envs\arc103\mingw\lib\gcc\i686-w64-mingw32\4.7.0 -LD:\Anaconda2\envs\arc103\libs 
-LD:\Anaconda2\envs\arc103\PCbuild -lpython27 -lgfortran -o .\fib1.pyd" failed with exit status 1 

Извините за беспорядок. Я потратил почти несколько месяцев на выяснение исправить, но для меня это слишком сложно, и все не помогло. Было бы очень полезно, если вы можете мне помочь. Благодарю.

+0

Вы можете разместить полную мощность.? (без всякой «неопределенной ссылки на» ошибки, конечно) –

ответ

0

Поскольку это уже пару месяцев, я не уверен, помогут ли эти советы, но я обнаружил, что при создании модуля Fortran для Python на Win 10, который работает только для 32bit, вам нужно использовать файл подписи, то есть что-то вдоль линий:

f2py.py -c cuncsd.pyf cuncsd.f 

Вместо того, чтобы использовать i686-w64-mingw32 набор инструментов я использовал прямой mingw32 один (чтобы уменьшить риск того, что я случайно в конечном итоге ни с чем 64bit).

Я также обнаружил, что вам нужно установить специальный Visual Studio например Python, как описано здесь: Microsoft Visual C++ Compiler for Python 3.4

Если вы используете Python 2.7 это VSC версии должны сделать трюк для вас, только новая версия (3.5 , 3.6) в это время не учитываются.

Для справки здесь мой полный f2py вызов на консоли, что я в конечном итоге с помощью (ни питон, ни f2py были на исполнение PATH):

python C:\Python34\Scripts\f2py.py -c cuncsd.pyf --opt="-frecursive -fmax-stack-var-size=66560" cuncsd.f -llapack -lrefblas -ltmglib 

Данный модуль зависит от 32 бит LAPCK разделяемых библиотек, Я скомпилировал ранее, и мы обнаружили, что он работает даже с системами XP.

Позже я вернулся и попытался скомпилировать это для 64 бит, но в конце концов сдался, когда я всегда сталкивался с ошибками ld. Я думаю, что в будущем для Windows 10 будет намного проще использовать встроенный Ubuntu для выполнения и расширения Python.

(см How to enable Bash in Windows 10 developer preview? и Getting PyCharm to recognize python on the windows linux subsystem (bash on windows))