簡體   English   中英

在f2py中使用外部數據文件

[英]Using external data files in f2py

我有一些舊的fortran代碼,正在包裝並使用f2py導入到python中。 fortran代碼依賴於位於同一目錄中的數據文件。 如果我在該目錄中啟動python,一切正常。

但是,如果我從其他地方導入該模塊,它將在本地查找文件,顯然找不到它們。

有沒有辦法告訴模塊在哪里執行fortran代碼(或其他巧妙的方法)?

我對f2py不太了解,但看起來好像有命令行版本和模塊版本。

要使用命令行選項,我看到兩個選項:

  1. 修改fortran以查找路徑
  2. 用包裝器包裝命令行

對於包裝器,可以使用執行以下操作的bash腳本:

#!/bin/sh
dir=$(dirname $0)       # gets relative path
dir=$(readlink -f $dir) # to get absolute
cd $dir
# Now call p2py

如果使用模塊版本,則可以在運行python化的fortran源之前使用os.chdir()更改目錄:

fortran_file = "foo.f"
dir = os.path.dirname(os.path.abspath(fortran_file))
os.chdir(dir)
# Now run p2py against fortran_file

我能想到的唯一其他選擇是查看是否可以將路徑注入到fortran代碼中。 也許您可以閱讀代碼,更改內存中源代碼的路徑,然后對動態修改后的代碼使用f2py.compile()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM