如何通过在终端中输入名称直接打开 Python 脚本(Mac OS X)

如何通过在终端中输入名称直接打开 Python 脚本(Mac OS X)

我正在安装 django 并在我的系统上运行它。

我有一个问题,但是教程通过运行命令来解释如何创建项目

django-admin.py startproject mysite

我的问题是,这不起作用。我切换到 django-admin.py 所在的目录并运行命令

chmod +x django-admin.py

没有结果。我尝试将包含该文件的目录添加到我的路径中,但没有结果。我最终用这个命令解决了我的问题

python /location/of/django-admin.py startproject mysite

这产生了我预期的结果。我的问题是:我需要更改/配置什么才能使命令

django-admin.py startproject mysite

就足够了吗?

以下是一些实验:

21:09~/Desktop/HI/NSN/Polls > django-admin.py startproject mysite
-bash: django-admin.py: command not found
21:09~/Desktop/HI/NSN/Polls > ./django-admin.py startproject mysite
-bash: ./django-admin.py: No such file or directory
21:09~/Desktop/HI/NSN/Polls > python django-admin.py startproject mysite
python: can't open file 'django-admin.py': [Errno 2] No such file or directory
21:09~/Desktop/HI/NSN/Polls > /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1
-bash: /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: /opt/local/bin: bad interpreter: Permission denied
21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1Password:
sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied
21:09~/Desktop/HI/NSN/Polls > sudo /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1sudo: unable to execute /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py: Permission denied
21:09~/Desktop/HI/NSN/Polls > python /opt/local/lib/python2.4/site-packages/django/bin/django-admin.py startproject prufa1
21:09~/Desktop/HI/NSN/Polls > ls
mysite prufa1

最终编辑:问题已解决,请参阅 Ian C 的答案以找到正确的解决方案。谢谢大家帮助我,速度非常快!

答案1

您可以使用 @Matt Jenkins hashbang (!#) 提示的更通用版本来使脚本更易于移植。确保文件中的第一行是:

#!/usr/bin/env python
...everything else...

python这说明“通过搜索我来查找一个名为的程序PATH,然后使用该程序运行该脚本的其余部分”。

您还需要使用以下命令设置脚本的执行位:

chmod +x django-admin.py

我提到这一点是为了完整性,并指出你已经这样做了。

最后,PATH变量实际上不包含.它(当前工作目录)。这是一项安全预防措施,我不建议更改该设置(例如./rm,当您想要 shell 时,它会阻止您调用rm)。因此,您需要使用以下命令调用脚本:

 ./django-admin.py startproject mysite

这说明“在当前工作目录中查找 django-admin.py”而不是“搜索变量PATH”,如果省略该./部分就会发生这种情况。

答案2

文件中的第一行应包含运行以 #! 为前缀的脚本的程序(称为 hashbang)

例如:

#!/path/to/python
...python code follows...

然后,您可以在文件上设置可执行位,并且 shell 将使用第一行中的程序作为解释器将其解释为脚本。

这通常与 shell 脚本一起使用,例如:

#!/bin/sh

for FILE in `ls`
{
    echo "Filename: ${FILE}"
}

答案3

  1. 在中选择文件发现者单击一次即可。

  2. 来自文件菜单,选择获取信息

  3. 在信息窗口中,单击“打开用:”来扩展窗口的该部分。

  4. 在出现的下拉菜单中,选择应用程序您希望使用它来打开文件。

来源: 印第安纳大学 - KB:如何指定应用程序打开某些文件类型?

答案4

当你更改文件 django-admin.py 权限时,你必须写下这些:

sudo chmod + x django-admin.py

对我有用

相关内容