2014-12-12 2 views
1

У меня есть некоторые коды Python, разработанные в Linux (с использованием Eclipse с Pydev), которые напоминают некоторые модули, сгенерированные с помощью f2py (какие расширения являются «* .so»), которые могут быть отлично выполнены на этой ОС. Теперь мне нужно запускать их и в Windows, но я нахожу некоторые трудности.Невозможно импортировать файлы, сгенерированные с помощью f2py, используя Eclipse в Windows

Когда в Windows я запускаю код Python, который не нуждается в этих модулях, все в порядке. Но если мне нужно импортировать их (например, «import WHATEVER», будучи WHATEVER.so файлом, сгенерированным с использованием f2py), я получаю сообщение об ошибке «ImportError: No module named WHATEVER». Эти модули находятся на том же пути, что и основной файл Python (то есть в/projectname/src /). Я проверил PYTHONPATH, и я не вижу ничего плохого (этот путь уже в нем).

Я также попытался импортировать их с помощью командного окна Python, найдя точно такую ​​же проблему. Кажется, он не может открыть эти файлы, даже если он ищет правильный каталог. Может ли кто-нибудь понять, что я забываю?

Заранее спасибо.

ответ

0

Работа с dlls, как прокомментировал MattDMo, было очень хорошим предложением. Однако это означало использование ctypes, что становится немного сложнее, когда подпрограмма Fortran возвращает более одной переменной (по крайней мере, для newbe такой меня). Другой вариант, который отлично работал для меня, заключался в том, чтобы создать файлы f2py с расширением «.pyc» вместо предыдущего « .so». Для этого все очень хорошо объяснено. here. Преимущество этого в том, что мне не нужно изменять мои коды, сделанные в среде Linux, и все еще работать в Windows.

2

.so файлы, созданные f2py для Linux, относятся только к Linux и не будут работать в других операционных системах. Вот почему вы не можете запускать двоичные программы Linux в Windows или Windows .exe s на Linux - формат совершенно другой. Чтобы использовать ваши библиотеки в Windows, вам необходимо скомпилировать их в Windows для генерации файлов .dll. gcc/gfortran и другие доступны для Windows в нескольких разных дистрибутивах. Лично я предпочитаю Cygwin, так как его менеджер пакетов/программа установки довольно проста.

+0

Конечно, поскольку вы говорите, что программа не будет использовать библиотеки fortran под Windows, вы можете просто сделать их импорт условным, поместив все сами операции импорта в 'try: ... except ImportError: pass 'clause. – jsbueno

 Смежные вопросы

  • Нет связанных вопросов^_^