【发布时间】:2011-09-04 00:29:12
【问题描述】:
当我想从命令行(在 ubuntu 下)运行我的 python 应用程序时,我必须在源代码 app.py 所在的目录中并使用命令运行应用程序
python app.py
如何使用以下命令从任意目录运行应用程序(通常是如何完成的):app?同样当你键入ls、mkdir 和其他命令?
谢谢
【问题讨论】:
标签: python shell command-line
当我想从命令行(在 ubuntu 下)运行我的 python 应用程序时,我必须在源代码 app.py 所在的目录中并使用命令运行应用程序
python app.py
如何使用以下命令从任意目录运行应用程序(通常是如何完成的):app?同样当你键入ls、mkdir 和其他命令?
谢谢
【问题讨论】:
标签: python shell command-line
与这里提到的有些不同的解决方案:使用别名。
alias app='python /path/to/app.py'
将上面的行添加到您的~/.bashrc 或~/.bash_login 文件中(如果您使用的是Ubuntu,最好添加到~/.bash_aliases)。然后您可以简单地将您的脚本用作带有app 的命令行工具。
无需添加shebang(从而修改您现有的Python脚本),无需使脚本可执行,也无需更改您的PATH。
【讨论】:
添加 shebang: 作为文件的第一行:#!/usr/bin/python 或 #!/usr/bin/python3(您可以使用 python -B 来防止生成 .pyc 文件,这这就是为什么我不使用/usr/bin/env)
使其可执行:您需要执行chmod +x app.py
(可选)将目录添加到路径,因此可以在任何地方调用它: 将包含可执行文件的目录添加到$PATH 环境变量。你如何做到这一点取决于你的 shell,但可以是 export PATH=$PATH:/home/you/some/path/to/myscripts(例如使用 bash 的 Linux 发行版)或 setenv PATH $PATH:/home/you/some/path/to/myscripts(例如 Mac OS X 中的 tcsh)。例如,您需要将其放在 .bashrc 或您拥有的任何启动脚本中,否则每次登录时都必须重复此步骤。
app.py 需要位于myscripts(或任何您命名的)文件夹中。你甚至不需要叫它app.py,但你可以重命名它app。
如果您想跳过第 3 步,如果您在同一目录中,您仍然可以通过 ./app 运行它。
【讨论】:
您可能希望符号链接到您的文件位置,而不是在路径中添加另一个位置
chmod +x app.py
ln ~app.py /opt/local/bin/app
...假设 /opt/local/bin 已经在您的路径中。
另外,不要忘记将 shebang 行添加到脚本的第一行:
#!/usr/bin/env python
【讨论】:
我很确定您必须通过 chmod +x 使脚本可执行,并将其放入系统的 PATH 变量中。
【讨论】:
在文件开头添加shebang line:
#!/usr/bin/env python
通过调用使您的文件可执行
chmod +x app.py
在外壳中。
将其移动到包含在PATH 环境变量中的某个位置,并将其重命名为app。或者,将包含app 的目录的路径添加到PATH 环境变量中,方法是添加以下行
export PATH=$PATH:/path/to/app
发送至您的.bash_profile。
【讨论】:
.bashrc 是错误的地方,因为您最终会在PATH 变量中获得多个路径实例(有效,但似乎毫无意义)。我不知道为什么.bash_profile 对你不起作用——也许它在 Ubuntu 上被称为 .profile,或者你的登录 shell 不是 bash(不太可能)或者 Ubuntu 在 X 登录时不执行你的登录 shell .
将脚本所在的目录添加到您的路径中,使其可执行,并添加适当的 shebang 行。
在你的.bashrc:
PATH=$PATH:/dir/to/the/script
可执行文件:
chmod +x myscript.py
在脚本的顶部,添加 shebang 行:
#!/usr/bin/env python
然后,你可以在任何地方做:
myscript.py
(请注意,您不需要 .py 后缀,它可以被称为任何名称,例如 app 如果您有适当的 shebang 行)。
【讨论】: