Skip to content

Commit

Permalink
Handle missing symlink method on Windows (#31006)
Browse files Browse the repository at this point in the history
  • Loading branch information
Wojciech Uss authored Feb 18, 2021
1 parent 5653c3a commit 2497f43
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions python/paddle/fluid/tests/unittests/test_static_save_load.py
Original file line number Diff line number Diff line change
Expand Up @@ -1276,11 +1276,11 @@ def test_ptb_rnn_cpu_float32(self):
# case 2: load with no need file
def symlink_force(target, link_name):
try:
os.symlink(target, link_name)
self.create_symlink(target, link_name)
except OSError as e:
if e.errno == errno.EEXIST:
os.remove(link_name)
os.symlink(target, link_name)
self.create_symlink(target, link_name)
else:
raise e

Expand All @@ -1304,6 +1304,14 @@ def symlink_force(target, link_name):
for k, v in load_state.items():
self.assertTrue(np.array_equal(base_map[k], v))

def create_symlink(self, target, link_name):
try:
os.symlink(target, link_name)
except AttributeError:
import ctypes
kernel_dll = ctypes.windll.LoadLibrary("kernel32.dll")
kernel_dll.CreateSymbolicLinkA(target, link_name, 0)

def check_in_static(self, main_program, base_map):
for var in main_program.list_vars():
if isinstance(var, framework.Parameter) or var.persistable:
Expand Down

0 comments on commit 2497f43

Please sign in to comment.