Opened 17 years ago
Closed 17 years ago
#8371 closed (fixed)
Windows users should use / instead of \ for file paths in settings.py
| Reported by: | pariksheet | Owned by: | nobody |
|---|---|---|---|
| Component: | Documentation | Version: | dev |
| Severity: | Keywords: | ||
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Please put a warning in settings.py or the tutorial page that Windows users must only use / not \ in their file paths.
When trying to run the step of python manage.py syncdb in the tutorial -
http://www.djangoproject.com/documentation/tutorial01/
The command kept throwing the following error -
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "C:\Python25\Lib\site-packages\django\core\management\__init__.py", line
334, in execute_manager
utility.execute()
File "C:\Python25\Lib\site-packages\django\core\management\__init__.py", line
295, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 77,
in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 96,
in execute
output = self.handle(*args, **options)
File "C:\Python25\Lib\site-packages\django\core\management\base.py", line 178,
in handle
return self.handle_noargs(**options)
File "C:\Python25\Lib\site-packages\django\core\management\commands\syncdb.py"
, line 51, in handle_noargs
cursor = connection.cursor()
File "C:\Python25\Lib\site-packages\django\db\backends\__init__.py", line 56,
in cursor
cursor = self._cursor(settings)
File "C:\Python25\Lib\site-packages\django\db\backends\sqlite3\base.py", line
144, in _cursor
self.connection = Database.connect(**kwargs)
sqlite3.OperationalError: unable to open database file
The solution was changing the \ to / in my file path for my sqlite database in DATABASE_NAME of settings.py
Change History (9)
comment:1 by , 17 years ago
comment:2 by , 17 years ago
| Description: | modified (diff) |
|---|
(Fixed description formatting)
This ticket is very confusing. The title and the description are suggesting different changes and there's no actual of the actual setting you were using for comparison. Please clarify what the actual problem is.
comment:3 by , 17 years ago
From experimentation, you get the error cited in the description if you include backslashes, e.g.: DATABASE_NAME = 'c:\tmp\playground'. Changing that to DATABASE_NAME = 'c:/tmp/playground' avoids the error. (There's already an admonition to always use forward slashes down in the comments on the TEMPLATE_DIRS, but for the initial syncdb users probably haven't read that far down.)
comment:4 by , 17 years ago
This was solved in [9010] for part of the tutorial by adding an admonition in the relevant place. What's left to be decided is if a similar admonition should be added to the project settings.py file template next to the DATABASE_NAME settting. That will dictate the status of this ticket.
comment:5 by , 17 years ago
Should have been "This was solved in [9010] for part one of the tutorial"
comment:6 by , 17 years ago
| Summary: | Windows users should use \ instead of / for file paths in settings.py → Windows users should use / instead of \ for file paths in settings.py |
|---|
Made title match description. The problem with the \s is that the either need to be doubled or in a raw string. That's standard Python, so if it's mentioned in the tutorial now I'm not sure it necessary to also put it in settings itself, though I suppose it wouldn't hurt.
comment:7 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:8 by , 17 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
This is just plain wrong.
While using "forward" slashes works, the correct path seperator on windows is "\".
The actual problem is that people don't seem to know about raw strings (or using
).
So the note should be changed to read sth. like:
file. When specifying the path on windows, remember to use double backslashes.
(e.g. C:
homes
user
mysite
sqlite3.db).
comment:9 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Well, no, it's not wrong, since forward slashes work perfectly well. So I don't see any reason to get into discussions of raw strings or doubled backslashes in comments in the settings file. Forward slashes work, and they're easier, let's leave it at that.
This is likely a SQLITE specific thing; Python otherwise doesn't mind / path separators on Windows.