Python 3.x 命令在文件路径下工作,但不在';不能从根本上工作

Python 3.x 命令在文件路径下工作,但不在';不能从根本上工作,python-3.x,Python 3.x,我仍然是bash编程的新手,但我试图用一个小脚本运行一个程序。将问题归结为错误消息,我已经 cd /full/path/to/program python3 -m krop 这是在实际文件夹为/full/path/to/program时工作的命令 但是如果我从根目录运行相同的代码,它将不起作用 cd /another/path python3 -m /full/path/to/program/krop /usr/bin/python3: Error while finding module s

我仍然是bash编程的新手,但我试图用一个小脚本运行一个程序。将问题归结为错误消息,我已经

cd /full/path/to/program
python3 -m krop
这是在实际文件夹为/full/path/to/program时工作的命令

但是如果我从根目录运行相同的代码,它将不起作用

cd /another/path
python3 -m /full/path/to/program/krop
/usr/bin/python3: Error while finding module specification for '/full/path/to/program/krop' 
(ModuleNotFoundError: No module named 'krop-0')
我尝试了很多变体,但总是有相同的输出错误。我不知道为什么库“python3”在文件名的末尾添加“-0”


要从根目录运行程序,我应该放置什么?

python-m
命令需要一个模块名,类似于在python程序中导入的语法。因此,如果您的模块位于
/directory
中,并且
directory
是有效的python模块,那么您可以执行
python-m directory.krop

但是,您不能从文件系统根目录索引python模块。您必须使bash脚本在good目录中运行,以便进行本地导入;或者,您必须在系统范围内打包并安装模块,以进行全局导入,该导入将在任何地方使用
python-m krop
调用

有关打包和安装模块的更多信息:

问题已解决

正如@hiroprotation所回答的,这是一个管理python导入路径的问题。包含python将用于搜索模块的所有目录的列表位于名为sys.path的变量中。 因此,如果有人想通过python命令从不同于“pwd”的目录运行程序(根据python帮助,将“库模块作为脚本”),则应在命令行中写入:

export PYTHONPATH='/full/path/to/program/'
python3 -c "import sys; print(sys.path)"
python3 -m krop
第二行实际上是在屏幕上打印,但第一行是唯一必需的(导出PYTHONPATH)

谢谢你的关键词和帮助

Ps.May应该编辑问题标题为“在linux上从命令行运行程序的python命令有问题”或类似的内容


参考:python--help:)

运行
cat/full/path/to/program/krop
时会看到什么?python将当前工作目录添加到
sys.path
;这就是模块
krop-0
似乎存在的地方。因此,如果从其他目录启动程序,则需要确保正确设置了
sys.path