[英]Run a python script and a compiled c code without terminal or dock item in Mac OS X
[英]How can I run my python script from the terminal in Mac OS X without having to type the full path?
我在Mac OS 10.6 Snow Leopard上,我正在尝试在我的PATH变量中添加一个目录,这样我就可以在终端提示符下输入:python alarm.py来编写一个小脚本。
我把路径放在我的.profile文件中,它似乎出现在我回显$ PATH时,但是python仍然无法找到我放在该目录中的脚本。
这是我的主目录中的.profile文件的内容:
~ toby$ vim .profile
export PATH=/Users/tobylieven/Documents/my_scripts:$PATH
这是echo $ PATH的输出,其中一切看起来都很好:
~ toby$ echo $PATH
/Users/tobylieven/Documents/my_scripts:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
这是我正在尝试运行的脚本:
~ toby$ ls /Users/tobylieven/Documents/my_scripts
-rwxrwxrwx@ 1 tobylieven staff 276 17 Jan 21:17 alarm.py
这是我试图用来运行脚本的命令和我得到的失败消息:
~ toby$ python alarm.py
python: can't open file 'alarm.py': [Errno 2] No such file or directory
如果有人知道我可能做错了什么,那就太好了。 非常感谢。
PATH仅适用于可执行文件,不适用于python脚本。 将以下内容添加到Python脚本的开头:
#!/usr/bin/env python
并运行
sudo chmod a+x /Users/tobylieven/Documents/my_scripts/alarm.py
然后,您可以键入alarm.py
来执行您的程序。
更改alarm.py包括:
#!/bin/python
作为文件中的第一行。
(或者/ usr / bin / python,取决于你的python解释器所在的位置。你可以通过输入:终端中的which python
来解决这个问题。)
然后你可以运行alarm.py
而不是python alarm.py
。
例如:
~ toby$ alarm.py
而在几秒钟内击败我的phihag是对的,你需要将执行权限(通过chmod)添加到alarm.py.
您需要修改Python特定的路径变量:PYTHONPATH。
所以:
export PYTHONPATH=/Users/tobylieven/Documents/my_scripts
应该让你工作。
请参阅: Python模块搜索路径
which python3
或which python
选择你想要的那个
复制该输出
将其粘贴到python文件的顶部
加一个#!
在那条路的前面所以它看起来像
#!/usr/local/bin/python3
确保更改文件权限
chmod +x filename
将该文件放在路径中的文件夹中
echo $path
首先找到你的路径
echo $HOME
如果你使用bash或zsh,你可能会有这样的东西
在~/.bash_profile
或~/.bashrc
或文件底部的~/.zshrc
export PYTHON_UTILS="$HOME/code/python/utils"
export PATH="$PYTHON_UTILS:$PATH"
考虑从文件中删除.py
,在这种情况下不需要它
关闭并打开您的终端,该终端通过其路径获取文件
现在你应该能够像对待bash命令一样处理你的python文件
您不需要使用python3 filename.py
来运行该文件,您只需使用filename
我真正在OS X上遇到的一些感兴趣的东西,就是你很难获得当前脚本的目录。
我找到了这个。
#! /bin/zsh
cd "${0:h}"
现在你可以执行一个相对于执行脚本的python文件,而不必知道你的python文件的确切路径。 这可能会有所帮助,也可能没有帮助,但我会使用它来使我的脚本和.command文件更好地工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.