我正在尝试通过在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是否适用于应用键盘,所以这样做的捷径也会很好。
答案 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
并且您将runstepper
和moveit
安装在与python可执行文件相同的目录中。
HTH