datasette: link_or_copy_directory() error - Invalid cross-device link
Hi, when I run
datasette publish heroku -n myapp --template-dir ./template mydb.db
I have this error
Traceback (most recent call last):
File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/utils/__init__.py", line 607, in link_or_copy_directory
shutil.copytree(src, dst, copy_function=os.link)
File "/usr/lib/python3.7/shutil.py", line 365, in copytree
raise Error(errors)
shutil.Error: [('/myfolder/youtubeComunePalermo/processing/./template/base.html', '/tmp/tmps9_4mzc4/templates/base.html', "[Errno 18] Invalid cross-device link: '/myfolder/youtubeComunePalermo/processing/./template/base.html' -> '/tmp/tmps9_4mzc4/templates/base.html'"), ('/myfolder/youtubeComunePalermo/processing/./template/index.html', '/tmp/tmps9_4mzc4/templates/index.html', "[Errno 18] Invalid cross-device link: '/myfolder/youtubeComunePalermo/processing/./template/index.html' -> '/tmp/tmps9_4mzc4/templates/index.html'")]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/aborruso/.local/bin/datasette", line 8, in <module>
sys.exit(cli())
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/aborruso/.local/lib/python3.7/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/publish/heroku.py", line 103, in heroku
extra_metadata,
File "/usr/lib/python3.7/contextlib.py", line 112, in __enter__
return next(self.gen)
File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/publish/heroku.py", line 191, in temporary_heroku_directory
os.path.join(tmp.name, "templates"),
File "/home/aborruso/.local/lib/python3.7/site-packages/datasette/utils/__init__.py", line 609, in link_or_copy_directory
shutil.copytree(src, dst)
File "/usr/lib/python3.7/shutil.py", line 321, in copytree
os.makedirs(dst)
File "/usr/lib/python3.7/os.py", line 221, in makedirs
mkdir(name, mode)
FileExistsError: [Errno 17] File exists: '/tmp/tmps9_4mzc4/templates'
I’m attaching my very basic template folder.
Thank you
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 28 (15 by maintainers)
Commits related to this issue
- shutil.Error, not OSError - refs #744 — committed to simonw/datasette by simonw 4 years ago
- Use dirs_exist_ok=True, refs #744 — committed to simonw/datasette by simonw 4 years ago
- Use dirs_exist_ok=True, refs #744 (#768) — committed to simonw/datasette by simonw 4 years ago
- Backport of Python 3.8 shutil.copytree, refs #744 — committed to simonw/datasette by simonw 4 years ago
- Backport of Python 3.8 shutil.copytree, refs #744 (#769) — committed to simonw/datasette by simonw 4 years ago
- Release notes for 0.43 Refs #581, #770, #729, #706, #751, #706, #744, #771, #773 — committed to simonw/datasette by simonw 4 years ago
Oh no! It looks like
dirs_exist_okis Python 3.8 only. This is a bad fix, it needs to work on older Python’s too. Re-opening.