我刚刚开始使用终端来满足我的编程需求。在很多Django教程中,我看到有人说,例如,我应该在终端输入:
manage.py runserver
然而,当我这样做时,它说:
bash: manage.py: command not found
当我这样做时,我开始工作:python manage.py runserver
,但是我想理解为什么这样做而另一种方法没有。我想这些是一些非常基本的东西,但我想我会在这里问。
答案 0 :(得分:11)
这是因为您的manage.py
不是可执行脚本。
首先将此行放在manage.py
的顶部(假设您的python位于/usr/bin/python
):
#!/usr/bin/python
然后让你的脚本可执行:
chmod +x manage.py
然后尝试执行您的脚本./manage.py runserver
。
请阅读此链接以获取更多信息:http://effbot.org/pyfaq/how-do-i-make-a-python-script-executable-on-unix.htm
答案 1 :(得分:4)
bash(1)
将搜索您的PATH
环境变量以查找要执行的程序。 PATH
通常不包含您当前的工作目录" (.
)因为这会让人们面临琐碎的安全问题:
cd /home/unsavory_character/
ls
如果unsavory_character
在/home/unsavory_character/ls
中放置了一个可执行文件,将ssh(1)
个密钥添加到您的~/.ssh/authorized_keys
文件中,那么您可能会感到惊讶 - 他或她可以在没有密码的情况下以你的身份登录。
所以现在这些系统都没有将当前工作目录添加到PATH
,因为它太不安全了。
解决方法:
./manage.py runserver
当然,假设您当前的工作目录是包含manage.py
脚本的目录。这可能是一个安全的假设。如果您希望能够从文件系统中的任何位置执行它,则可以通过修改PATH
或~/.profile
或{{1}将目录添加到~/.bash_profile
文件。 (如果其中一个已经存在,请选择那个。我似乎记得OS X上有~/.bashrc
个问题的其他人发现一个或另一个文件运行良好,而另一个文件从未执行过。)
(在我的情况下,我在PATH
中有一堆自编写的实用程序,但您可能在其他位置。根据需要更改路径。)
~/bin/
答案 2 :(得分:0)
manage.py需要可执行。尝试:chmod +x manage.py
答案 3 :(得分:0)
我已经在一起制作了一个小“脚本”来实现自动化:(只需复制整个文本,然后粘贴到活动终端内。)
tee -a ~/.profile <<EOF
if [ -d "/Library/Python/2.6/site-packages/django/bin" ] ; then
PATH=/Library/Python/2.6/site-packages/django/bin:$PATH
fi
EOF
django-admin.py
不这样做吗?我想是的,因为我可以在manage.py
文件夹中找到../bin
。并在官方文档中说明,他们也这样做。所以我相信;)
另外,您是否通过easy_install
获得了Django?我的脚本希望你使用Snow Leopard和系统版本(Python 2.6)。