Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OSError:[Errno 18]无效的跨设备链接_Python_Django_Database_Settings_Backend - Fatal编程技术网

Python OSError:[Errno 18]无效的跨设备链接

Python OSError:[Errno 18]无效的跨设备链接,python,django,database,settings,backend,Python,Django,Database,Settings,Backend,我正在使用django 1.6.5和python 2.7。 我的应用程序中有导入功能,但出现错误: OSError: [Errno 18] Invalid cross-device link 我对这部分代码有问题: os.rename(db_temp, settings.DATABASES['bookmat']['NAME']) 设置中的代码: 'bookmat': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/my_

我正在使用django 1.6.5和python 2.7。 我的应用程序中有导入功能,但出现错误:

OSError: [Errno 18] Invalid cross-device link
我对这部分代码有问题:

os.rename(db_temp, settings.DATABASES['bookmat']['NAME'])
设置中的代码:

'bookmat': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': '/my_projects/book/db/bookmat.sqlite3',
},

我认为只有当源和目标名称位于同一文件系统上时,重命名才有效。你可能有不同的坐骑。否则你就会犯这个错误。您可以通过复制和删除实现相同的效果


希望它对操作系统有所帮助。重命名仅在源和目标位于同一文件系统上时有效。你应该改为使用
shutil.move

什么是db_temp value
db_temp=settings.DATABASES[db_temp\u name]['name']
@iklinacinitial db_temp value as string当我试图将Docker容器中的文件夹中的内容移动到卷时,我的版本是shutil.move()实际上是根据os.rename()实现的。还有其他替代方法吗?我正在使用
shutil.move
,但仍然会出现这个错误,正如Kilian所说的
shutil.move()
在不同的文件系统中会出现与
os.rename()相同的错误。最容易使用的是
shutil.copy()
os.remove()
python3中的shutil.move
通过使用copy和delete正确处理外部文件系统,per.@kravietz在我的例子中,它不能正确处理它,至少在python3上,它有一个常规的ext4和一个安装了
rclone
的文件夹。