启动 Python .py 脚本的别名

Alias to Launch Python .py Script

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

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

别名 reboot 工作正常,但 none 的其他人完全可以工作。我得到的只是 "bash: runstepper: command not found".

我这样做是因为我想通过 iFreeRDP 应用程序使用 iPhone 来控制 Raspberry Pi 2 上的网络摄像头。我使用 Windows 10 笔记本电脑的远程桌面连接。此应用程序和其他一些类似 apps 的问题是句号和 space 键不起作用(这是已知报告的问题)。这使得无法输入完整的命令。

顺便说一句,我尝试使用 VNC 查看器 iPhone 应用程序,但当我将所需的软件加载到 RPi2 上并要求我获取新的 SD 卡时,我的 Raspberry Pi 2 被劫持了。幸运的是,我几个小时前刚刚克隆了我的 SD 卡。说来话长,但我现在对VNC Viewer的使用感到非常厌倦。

请帮助我输入别名,这样我就可以输入一个没有 space 或句点的单词,或者创建一个我可以双击的桌面快捷方式,这样我就可以将其用作这些本来不错的apps的不足之处。我不确定 Ctrl + C 是否也适用于应用程序键盘,因此快捷方式也不错。

要在 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

表示"look for the main() function within the moveit module in the motion_control package"。所以相应地适应!请注意:不要让 main() 函数接受任何参数,而是在其中进行参数解析(如果你解析参数)。

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

cd motion_control
sudo python setup.py install

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

HTH