启动Python .py脚本的别名

时间:2016-03-18 20:44:59

标签: bash python-2.7 alias shortcut raspberry-pi2

我正在尝试通过在sudo nano~ / .bashrc中放置以下别名来创建一个Alias来启动mystepper6.py和moveit.py以及sudo ps ax(注意:我在这个脚本中使用Python 2。)< / p>

reboot='sudo reboot'
ax='sudo ps ax'
runstepper='python home/pi/mystepper6.py'
moveit='sudo python home/pi/moveit.py'

alias reboot工作正常,但其他任何工作都没有。我得到的只是“bash:runstepper:command not found”。

我这样做是因为我试图使用带有iFreeRDP应用程序的iPhone在我的Raspberry Pi 2上控制我的网络摄像头。我使用Windows 10笔记本电脑上的远程桌面连接。这个应用程序和一些其他类似应用程序的问题是,句点和空格键不起作用(这是一个知道报告的问题)。这使得输入完整命令成为不可能。

顺便说一下,当我将所需的软件加载到RPi2上时,我尝试使用VNC Viewer iPhone应用程序并将我的Raspberry Pi 2劫持,要求我购买新的SD卡。幸运的是,我刚刚在几小时前克隆了我的SD卡。很长一段时间,但我现在非常厌倦使用VNC Viewer。

请帮我处理别名'所以我可以输入一个没有空格或句号的单词,也可以创建一个我可以双击的桌面快捷方式,这样我就可以用它来解决这些优秀应用程序的不足之处。我不确定Ctrl + C是否适用于应用键盘,所以这样做的捷径也会很好。

1 个答案:

答案 0 :(得分:2)

要在shell中创建别名,您应使用alias shell指令:

alias reboot='sudo reboot'
alias ax='sudo ps ax'

要运行ps ax,您首先不需要sudo。如果您正在运行标准内核,任何用户都可以看到没有特殊权限的所有进程列表。

对于两个python别名:

alias runstepper='python home/pi/mystepper6.py'
alias moveit='sudo python home/pi/moveit.py'
                          ^-- missing / here

不要忘记路径中的第一个/,或者每当你启动别名命令时,你都会让python查找相对于当前目录的脚本。即如果你在/home/pi,它会查到/home/pi/home/pi/movestepper6.py并告诉你脚本不存在。所以正确的命令应该是:

alias runstepper='python /home/pi/mystepper6.py'
alias moveit='sudo python /home/pi/moveit.py'

虽然作为对你的建议,我不是让别名来运行python脚本,而是将它们变成一个合适的python包。考虑到在两个代码中,您的入口点是一个名为main()的函数,即两个脚本都以:

结尾
if __name__ == "__main__":
    main()

您应该为项目创建一个目录:

cd /home/pi
# create a directory for your python project:
mkdir motion_control
# create a directory to place your scripts within:
mkdir motion_control/motion_control
# adding an empty __init__.py file makes that directory a python package
touch motion_control/motion_control/__init__.py
nano motion_control/setup.py

现在你只需要在setup.py文件中添加它:

from setuptools import setup

setup(name='motion_control',
      version='0.1',
      description="Python library to operate stuff that move on my rasppi",
      long_description='explain how to use the tools installed by this package',
      classifiers=[],
      keywords='raspberrypi motion control',
      author='YOU',
      author_email='YOUR@EMAIL',
      url='ANY URL YOU THINK IS RELEVANT',
      license='MIT', # or any license you think is relevant
      packages=['motion_control'],
      zip_safe=False,
      install_requires=[
          # add here any tool that you need to install via pip 
          # to have this package working
          'setuptools',
      ],
      entry_points="""
      # -*- Entry points: -*-
      [console_scripts]
      runstepper = motion_control.mystepper6:main
      moveit = motion_control.moveit:main
      """,
)

entry_points部分非常重要,因为它告诉python在哪里寻找要执行的第一个函数来运行脚本。例如:

      moveit = motion_control.moveit:main

表示&#34;在motion_control包&#34;中的moveit模块中查找main()函数。所以要相应调整!作为注释:不要让main()函数接受任何参数,而是在其中进行参数解析(如果你解析参数)。

最后,要安装它,您需要做的就是:

cd motion_control
sudo python setup.py install

并且您将runsteppermoveit安装在与python可执行文件相同的目录中。

HTH