
执行程序的方法有很多种, 主要是, 在命令行里面直接输入命令, 或者是使用脚本文件, 又或者是把脚本文件设成可执行文件的方式, 这些方法都有各自的长处和短处, 都适合用在那种不同的情况之下, 现在我们要做的就是在接下来的文章当中, 去好好探讨这些方法的问题, 同时提供一些关于怎么用命令行来执行程序的时候的技巧。
一、直接在命令行里面, 把那个相关的指令给输进去。
在命令行当中, 直接地去输入命令, 这应该算作是最简单的一种操作方法。
你所需要做的, 只是打开那个名为命令行的界面, 比如说是系统下的一个叫做cmd的东西, 或者是macOS以及Linux这些操作系统下对应的命令行工具也可以, 接着去把命令给敲进去就好, 随后再把那些你想要让它来执行的那段代码一并给输入上就好了, 举个例子来说的话就是这样的:
bash
python -c "print('Hello, World!')"
这个方法, 它是可以用在比如执行一些比较简单的语句这个情况下面的, 或者是临时测试某些代码片段这个场景里的。那么使用加-c选项这个东西的时候, 你就可以直接在命令行里面运行一段你写好的代码了。
二、使用一下脚本文件。
在真实的开发工作里, 大家一般会把代码写进一个单独的文件中, 这个文件通常就叫做脚本文件, 接着, 会打开命令行界面, 然后在里面运行这个对应的文件, 使用这种方式来处理那些内容比较多或者逻辑比较复杂的编程任务, 具体的操作流程可以分为以下几个步骤:
你要去弄一个那种叫脚本的文件, 比方说给它起名叫.py这样子的名字, 然后在它的里面, 把代码写进去。
python
# script.py
print("Hello, World!")
先打开那个用来输入命令的地方, 再去找脚本文件放在哪个文件夹里面, 接着就到了那个目录下面, 最后把下面的这一串命令敲进去, 好让那个脚本运行起来。
bash
python script.py
通过这种方式来开展项目时的开发工作, 还有测试工作, 同时也包含部署操作, 那是相当合适的。
三、把那个拿来写的程序文件, 给设置成可以直接让操作系统去跑的状态。
在Unix-like操作系统(例如Linux和macOS)当中, 大家可以把脚本文件设置成可执行的格式, 这样的话, 就能直接在命令行界面去执行它具体的操作步骤如下。
在脚本文件的最前部, 加上这样的一行内容, 它能让程序知道要去找哪一个解释器来运行。比方说, 你要编辑一个后缀为py的文件, 然后添加下面这些东西:
python
#!/usr/bin/env python3
print("Hello, World!")
为了把脚本文件的访问权限修改一下, 让这个文件能够被拿去当作程序来运行执行。
bash
chmod +x script.py
通过直接运行该脚本文件的方式来进行操作。
bash
./script.py
这种方法可以做到简化命令行操作, 从而让脚本执行更加方便。
四、使用虚拟环境
当大家在项目开发的那个过程里面, 去使用虚拟环境的时候, 这其实算是一个被大家普遍认可的比较好的做法或者是标准操作。
因为通过这种方式, 你可以专门建立一个单独的工作空间或者说独立的一块地方, 这样做的目的就是为了防止你的工作内容和整个系统本身默认的环境会发生冲突或者互相影响。具体的操作流程大致可以分为一下几点:
需要你去创建一个属于虚拟性质的运行环境。
bash
python -m venv myenv
首先把那个虚拟的环境给激活了。
要在虚拟的里面去执行那个脚本, 具体的操作方法是这样的。
bash
python script.py
从虚拟环境中退出操作是。
bash
deactivate
虚拟环境这个工具, 它是能够来帮助你管理项目中所需要的那些依赖关系的, 这样一来呢, 就可以确保在不同项目之间的相互运作情况是完全没有受到彼此影响的。
五、使用命令行参数
在实际做开发的过程当中, 我们通常会碰到这样一种情况, 那就是需要把参数传递给脚本。为了做到这一点, 大家可以用命令行参数这样的方式来解决, 具体步骤是:
创建一个脚本文件,例如.py,并编写代码以接收命令行参数:
python
import sys
if len(sys.argv) != 2:
print("Usage: python script.py ")
sys.exit(1)
name = sys.argv[1]
print(f"Hello, {name}!")
就是在命令行这个地方, 去执行那个脚本的东西, 同时呢, 把那些参数给它传过去。
bash
python script.py World
这个方法可以用在很多场合, 特别是当人们需要传递输入的数据或者传递配置的参数的时候。
六、使用环境变量
在一些特定的情景里面, 拿环境变量去传递那些参数或者是进行配置的话, 其实算是一个挺好的办法。具体的操作流程是这样的:
你应当创建一个脚本文件, 比如说是那种带着py后缀的文件, 然后在里面编写代码, 去把那个环境变量读取出来。
python
import os
name = os.getenv("NAME", "World")
print(f"Hello, {name}!")
你可以在命令行环境里面把那个属于环境变量的东西进行设置操作, 然后紧接着就去执行那个相关的脚本文件。
bash
NAME=Python python script.py
这个办法呢, 是可以用在很多不同的环境里头去跑同一个脚本的这个情况。就是说要适应那种需要, 在不同环境下运行同一脚本的这种场合。
七、把那个调度的工具给用上了。
在真实的使用环境里, 很多人会碰到需要让一个脚本定期去运行的事儿。好比说每天定时把数据库备份好。或者每小时检查一次系统现在是什么状态。这些事儿都能用调度工具来做得到。常见的工具有cron这个。也有任务计划程序那样的东西。具体的操作可以按照下面的步骤来走:
创建一个脚本类文件的例子, 比如说后缀是点py的这个文件, 并且在这个文件中编写那些是需要被安排为定期来执行的代码部分。
通过配置调度工具, 实现让脚本在设定的时间里自动被执行的工作任务。
这种方法呢, 它是适合于那些需要去定期地执行具体任务的那些场景的。
八、使用
它是一种容器化的技术, 能够将应用程序以及它所需要的所有依赖条件全部都打包到一个所谓的容器里面去, 这样一来就可以保证该应用不管是在什么样的环境之下都能够顺利地运行。接下来我们需要进行的步骤是这样的。
创建一个脚本文件, 比如说.py类型的文件, 然后在里面编写好你需要去执行的那些代码。
我们需要创建一个用来定义容器环境的。
dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY script.py .
CMD ["python", "script.py"]
在进行构建镜像的工作时。
bash
docker build -t my-python-app .
运行容器:
bash
docker run my-python-app
通过使用这样的方式, 能够确保在应用在不同环境的时候, 其状态或者表现可以保持一致。
九、使用任务队列
咱们得知道, 在分布式系统里, 要是用上任务队列这些东西, 比方说RQ这类东西, 就能把任务的执行方式改成异步的那种操作模式, 还能实现服务器之间的工作量分担与均衡的这么一个状态呢。
你得去弄一个叫做脚本文件的东西, 打个比方来说, 这个文件的名称是tasks.py, 而且还要在这个文件里面把那些需要去执行的任务给进行定义。
python
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
启动 :
bash
celery -A tasks worker --loglevel=info
调用任务:
python
from tasks import add
result = add.delay(4, 6)
print(result.get())
可以使用任务队列这种方式, 来把任务的异步执行给实现出来, 同时还能够实现负载均衡的工作安排。因为它的这个特点, 所以对于高并发的这种场景来说, 是相当的适用的。
十、在使用远程执行工具的时候。
在有些时候, 我们是要去远程那个服务器上执行脚本的, 那么就可以用远程执行工具, 比如ssh之类的, 来实现这个功能, 接下来是这个步骤。
创建一个脚本文件, 比如说.py类型的文件, 然后在里面编写好你需要去执行的那些代码。
通过ssh工具连上那台远程服务器, 然后在上面执行对应的脚本。
bash
ssh user@remote-server 'python /path/to/script.py'
通过使用某些库来让远程执行的事情变得简单一点。
python
from fabric import Connection
conn = Connection('user@remote-server')
conn.run('python /path/to/script.py')
利用远程执行工具, 咱们能够很方便地在位于远端的服务器上面去运行脚本代码, 这一方法非常适用于那些处于分布式架构之中的系统环境, 又或者是在需要实现远程进行管理的场景下面。
总结
通过这篇文章里的介绍, 我们仔细地、一层一层地探讨了关于用命令行去执行那几个程序的办法到底有好多, 这里面就包括了在命令行里面直接就把那个命令给输进去这么一种方式, 还有使用那个脚本文件这样的方式, 把那个脚本文件设置成可执行的文件这么一种操作, 使用虚拟环境这种方式, 使用命令行里面的那些参数这种方式, 使用环境变量这种方式, 使用调度工具这种方式, 使用这个方式, 使用任务队列这种办法, 使用远程执行那种工具这样的做法等等这一大堆内容。
这每一个方法都有它自己的好的地方和不好的地方, 所以呢它们适合的那些个不同的应用场景也就各有各的区别。
在实际的开发过程里面, 咱们可以依据具体的实际需求来选择一些合适的办法, 从而来让工作效率得到提高, 并且使代码的质量也得到提升。
关于大家经常来问的, 整理出来的几个相关问题的回答。
你可以在命令行里面找到那个安装的所在的路径吗?
在命令行中执行程序的第一步是确认是否已经正确安装。您可以通过输入 -- 或者 -- 来检查对应的版本信息。如果系统返回了版本信息的话, 那就说明软件已经成功安装了。
除此之外, 您还可以使用 where 命令(适用于 平台)或者 which 命令(适用于 Mac 和 Linux 平台, 注意: 原文括号内标记可能指代环境但未明确写出命令名, 此处按通用理解补全逻辑为查找路径)来找到该程序的安装路径。
你能够通过在命令行界面里运行哪些种类的应用软件?
命令行功能是非常强大的, 它允许你去执行各种不同种类的程序, 这些程序里包含简单的脚本文件, 比如我们常说的 .py 格式的文件, 还有交互式命令以及模块也是被支持的, 对于脚本文件来说它们通常在内部包含了一连串需要进行的指令操作, 而你想要去运行这样的脚本文件的话就可以通过直接输入 .py 或者再次输入 .py , 这样就能让系统进行执行, 另外对于那些需要通过交互方式来完成的命令操作则可以通过直接使用终端输入指令的方式或者直接打开对应的解释器来进行一个测试和验证。
当人们在运行通过命令行执行应用程序的过程中碰见了错误提示的话, 应当去考虑采取一些相应的措施来进行解决。
在您执行程序这段操作的时候, 如果忽然跳出了错误的提示消息, 您不妨去把这些提示的内容仔细看清楚, 这样做通常是有机会帮您找到问题出现在哪里的。大家经常会碰到的毛病有路径写得不对、代码里面的语法有错, 还有找不到相关的模块之类的情况。
您要检查一下文件的路径是不是写对了, 保证代码的写法是符合规定的规范的, 还要确保需要用到的库已经被装好。要是麻烦还是没有解决掉的话, 您可以去网络上把那些错误信息搜一搜, 这样多半是能寻找到配套的解决办法或者是相关的讨论内容的。
