解决Python在命令行中执行提示“No module named xxx”的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Python在命令行中执行提示“No module named xxx”的方法相关的知识,希望对你有一定的参考价值。

参考技术A

告诉编译器去哪里找

“将模块放在正确的位置” 这个解决方案对于以下几种情况可能并不适用:

最后一点是 “想将模块放在其他地方”,那么就要告诉解释器去哪里找。我们之前通用的一种方法,就是编辑 sys.path ,但这不是通用的方法。标准的实现方法是在 PYTHONPATH 环境变量中包含模块所在目录。

PYTHONPATH 环境变量的内容会因为使用的操作系统不同而有所差异(参见下面的 “环境变量” ),但从基本上来说,它与sys.path很类似——一个目录列表。

如何使用 Python 3.x 在命令行中执行多个命令

【中文标题】如何使用 Python 3.x 在命令行中执行多个命令【英文标题】:How to execute multiple command in command line with Python 3.x 【发布时间】:2021-04-26 13:06:25 【问题描述】:

谢谢大家。我正在编写一个脚本来在命令行中执行多个命令。这是我整个剧本的一部分。

我检查了很多答案,但没有一个能解决我的问题。其中一些太旧而无法使用。

我的命令是这样的

cd C:/Users/Bruce/Desktop/test
set I_MPI_ROOT=C:\Program Files\firemodels\FDS6\bin\mpi
set PATH=%I_MPI_ROOT%;%PATH%
fds_local -o 1 -p 1 test.fds
python test.py

我尝试使用 subprocess.runos.system 等,但它们不起作用。我不知道发生了什么。这是我用过的一个例子。

file_path = "C:/Users/Bruce/Desktop/test"
cmd1 = 'cd ' + file_path
cmd2 = "set I_MPI_ROOT=C:/Program Files/firemodels/FDS6/bin/mpi"
cmd3 = "set PATH=%I_MPI_ROOT%;%PATH%"
nMPI = '-p '.format(1)
nOpenMP = '-o '.format(1)
cmd4 = "fds_local   ".format(nMPI, nOpenMP) + file_name
cmd = ' &&  &&  && '.format(cmd1, cmd2, cmd3, cmd4)
subprocess.Popen(cmd, shell=True)

我对子流程不太熟悉。但是我已经工作了一个星期来解决这个问题。这让我发疯。有什么建议吗?

【问题讨论】:

【参考方案1】:

cmd 需要是一个文本列表,就像你在 shell 上看到的一样,用空格分隔。例如。 "ls -l /var/www" 应该是 cmd=['ls','-l','/var/www']

也就是说,使用 os.chdir 更好地完成 cd。 Set 最好将环境字典提供给子进程调用。多行最好通过将几行放入一个 shell 脚本(可以接受参数)来完成,这样你就不必在 python 中搞砸了。

这是一个例子。如果命令不在 OS 的 $PATH 中,您可以完全限定其路径

from subprocess import Popen
cmd=['cd',r'C:\Program Files (x86)\Notepad++','&&','notepad','LICENSE','&&',r'D:\Program\Tools\Putty.exe','-v']
d=Popen(cmd, shell=True)

【讨论】:

谢谢,王。你说 cmd 应该是一个列表。但是subprocess.call("cd C:/Users/Bruce/Desktop/test && notepad", shell=True) 可以工作并打开记事本。但是当我使用subprocess.call("fds test.fds", shell=True) 时,它就不起作用了。但是,它可以在命令行中执行,os.system 可以正常运行。为什么 subprocess 不起作用而 os.system 起作用? 更新了一个示例供您使用 非常感谢,王。也许子进程中的 callPopen 出了点问题,我用 os.system 解决了这个问题。我认为子流程模块中一定存在错误。因为相同的代码在 os.system 上运行良好。

以上是关于解决Python在命令行中执行提示“No module named xxx”的方法的主要内容,如果未能解决你的问题,请参考以下文章

记一次解决cmd中执行java提示"找不到或无法加载主类"的问题

python3 使用pip安装(命令行中)失败或 “not a supported wheel” 解决方案!

命令行中编译执行报错提示“找不到或无法加载主类”

python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法

如何在同一命令行中的文件上执行 python 脚本? [复制]

在单行命令行中执行多行语句?