2015-05-02 29 views
5

Tôi cần gọi các thủ tục từ các mô-đun Fortran trong Python. Tôi đã làm điều đó với f2pypython2.7. Nó hoạt động khá tốt.Cài đặt f2py với python3

Bây giờ, tôi phải sử dụng nó với python3 nhưng f2py dường như không tương thích với python3.

Tôi thấy một số người sử dụng phiên bản có tên là f2py3, nhưng không có sẵn thông qua pip, không thông qua macports (Tôi đang sử dụng máy Mac). Ngoài ra, python3+numpy+f2py seem to be already integrated in Fedora.

Có ai đã quản lý để sử dụng f2py3 (hoặc tương đương) với python3 trên máy Mac không? Nếu không, bạn đề xuất giải pháp thay thế nào để liên kết các thư viện Fortran với python3?

+0

Tôi cũng quan tâm đến điều này. FYI, liên kết Fedora của bạn ở trên không trả về kết quả khi tôi thử nó nhưng tôi nhận được một số thông tin chỉ cần tìm kiếm 'f2py' thông qua liên kết của bạn. – JohnE

+0

Tôi đã sửa liên kết bị hỏng. Nó sẽ trỏ trên các trang tải xuống của tài nguyên RPM cho python3-numpy-f2py. – jvtrudel

+0

vâng, hoạt động ngay bây giờ. cảm ơn! – JohnE

Trả lời

4

Thay vào đó, bạn có thể sử dụng để gọi các chương trình Fortran mà không phải dựa vào f2py. Nhược điểm của phương pháp này là bạn cần chỉ định giao diện cho chính mình.

Đây là example Tôi đã đăng trên SO một số thời gian trước đây.

+0

Rất thú vị vì f2py dường như không còn được duy trì nữa (có thể tôi đã sai?). Vấn đề là tôi cần sử dụng rất nhiều mã fortran cũ. Giao diện tái cấu trúc không phải là một nhiệm vụ dễ dàng và có thể tạo ra lỗi. Nhưng chắc chắn, tôi sẽ sử dụng bạn gợi ý cho các mã mới. – jvtrudel

+0

Vâng, đối với mã cũ, bạn có thể sử dụng các tùy chọn trình biên dịch để tác động đến các tên hàm được tạo ra (ví dụ: ['-fno-underscoring' cho' gfortran'] (https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen- Options.html)) và cố gắng gọi các thói quen từ python trực tiếp (không có ISO_C_Bindings). Sau đó, tất cả công việc sẽ cần phải được thực hiện ở phía Python. Lưu ý rằng đây là (nói chung) không di động, và phụ thuộc vào trình biên dịch được sử dụng! –

Các vấn đề liên quan