我在Windows+Cygwin上使用Django 1.5&Python 2.7。下面的命令给出了bash shell中的一个错误
$ python /cygdrive/c/Python27/Lib/site-packages/django/bin/django-admin.py
错误:
C:\Python27\python.exe: can't open file '/cygdrive/c/Python27/Lib/site-packages/django/bin/django-admin.py': [Errno 2] No such file or directory
但这是有效的
$ python c:/Python27/Lib/site-packages/django/bin/django-admin.py
我在django-admin.py错误上看到过很多类似的问题,但没有一个是关于这个问题的。
那么Cygwin上bash shell中的python c:\somefile.py
&;python /cygdrive/c/somefile.py
之间的区别是什么
正如其他人所指出的,这里的部分问题是您正在从Cygwin调用Windows Python。这是一件很奇怪的事情,当你碰到这种奇怪的行为,但它可以小心地工作。
当您从Cygwin调用Python(Cygwin Python和Windows Python都是这样)时,您传递的路径将与Python处理的路径一样。这意味着Python必须知道如何处理这种路径。例如,如果通过以下操作:
C:\path\to\script.py
-Windows Python知道如何处理这个问题,而Cygwin Python可能会感到困惑。也就是说,如果将其键入Cygwin shell,则这些反斜杠很可能被解释为转义字符,而它们是否是转义字符取决于一些相对复杂的规则。如果你在Cygwin玩的话,就避免。'C:\path\to\script.py'
-这些引号将被Cygwin的bash shell去掉,同时停止将反斜杠作为转义字符,因此这对于从Cygwin调用Windows Python很好。不过,从Windows命令行或类似命令行运行会导致问题,因为Windows不处理单引号。/cygdrive/c/path/to/script.py
-这是从任何Cygwin程序(如Cygwin Python)的角度来看的路径。它对Cygwin-Python非常有效,但对Windows-Python则完全无效。C:/path/to/script.py
-这不是很清楚,但是Windows路径中的反斜杠可以用正斜杠替换,任何表现良好的Windows程序都应该处理得很好:Windows明确允许它们。特别是,Windows Python对它们没有任何问题,Cygwin的bash shell也不会试图巧妙地使用正斜杠。因此,可以在调用Windows Python的任何地方使用这种路径。$(cygpath -w /cygdrive/c/path/to/script.py)
-cygpath
是一个Cygwin实用程序,用于在不同的路径样式之间进行转换;通过-w
选项调用,它将Cygwin路径转换为Windows路径。$(...)
表示Cygwin的bash shell应该用运行该命令的结果替换文本,因此如果这是作为从Cygwin bashshell调用的Windows Python的参数给定的,Windows Python将收到它可以使用的Windows路径。path/to/script.py
-这是一个相对路径,因此需要从适当的目录调用它。它是第一个同时适用于Cygwin和Windows Python的版本,并从Cygwin shell和Windows命令行调用。如您所见,路径是复杂的,特别是当您同时使用Cygwin和Windows工具时。
一般来说,如果可能的话,最安全的做法是坚持使用其中一个(因此,只能从Cygwin shell使用Cygwin Python,并且只能从Windows命令行使用Windows Python)。如果这不可能,那么下一个最好的方法是在从Cygwin调用Windows程序时使用
cygpath
,或者使用其他方法-运行cygpath -w /cygdrive/c/Windows
将得到c:\windows
;运行cygpath 'c:\Windows'
将打印/cygdrive/c/Windows
。您似乎将Python安装在C:中,而不是/usr/bin/Python或类似的文件中。我猜您是从Python.org安装了Python的Windows端口,而不是Cygwin Python包。在本例中,python可执行文件没有使用Cygwin(它运行的是本机的),它需要Windows格式的路径名。
此外,Django似乎已安装在Windows Python安装中。Cygwin可能完全不在这个圈子里。
好吧,没什么不一样的:
我想你是在寻找奇怪的权限。
编辑:下面只是指问题中的一个错别字。
错误显示:
你错过了
site-packages
中的连字符了吗?相关问题 更多 >
编程相关推荐