繁体   English   中英

Python 脚本在没有 python -m 的情况下不起作用

[英]Python scripts don't work without python -m

我非常抱歉问这个问题,但我完全无能为力

我刚刚迁移到 Mac,通过 brew 设置了 python,一切正常,除了我无法打开 Jupyter 笔记本或访问 pip,没有

python3 -m pip 

或者

python3 -m jupyterlab

命令

这在我之前从未在 Linux 或 Windows 上发生过,我什至仔细检查了我的路径以确保包含 python 目录。 只是我必须创建一个别名,还是我在这里遗漏了其他东西?

结果是什么

echo $PATH

是 pip 和 jupyterlab 脚本存储在该 PATH 中的目录

如果

which pip

或者

which jupyterlab

以空结果返回,那么可能就是这种情况。 如果您使用--user开关安装任何带有 pip (或 python3 -m pip)的东西,那么这几乎总是原因。 在 OSX 上,我认为默认用户位置是~/Libraries/bin/Library/python3.8/site-packages ,在 Linux 上它始终是~/.local/bin~/.local/python3.8/site-packages ,所以你可能需要翻找一下才能找到它们。

显然更改 python 版本以适合您的情况。

如果您已经完整地安装了软件包(例如,您没有意外删除 bin 目录),您总是可以通过执行以下操作找到PATH环境变量中缺少的二进制路径。

python3 -m pip show -f jupyterlab

这将 output 属于已安装的 package jupyterlab的文件列表。

现在 go 通过文件列表查找您丢失的可执行文件。 jupyter-lab为例:

$ python -m pip show -f jupyterlab
Name: jupyterlab
...
Files:
../../../bin/jupyter-lab
...

注意相对路径。 现在在Location行中找到路径:

$ python -m pip show -f jupyterlab
Name: jupyterlab
...
Location: /tmp/myenv/lib/python3.8/site-packages
...

根据位置解析可执行文件的路径以获得绝对路径:

$ readlink -f /tmp/myenv/lib/python3.8/site-packages/../../../bin/jupyter-lab
/tmp/myenv/bin/jupyter-lab

这是您的可执行文件的路径。 调用它应该可以工作:

$ /tmp/myenv/bin/jupyter-lab -V
2.1.3

现在将可执行文件的父目录添加到PATH并检查是否找到了jupyter-lab

$ export PATH=$PATH:$(dirname /tmp/myenv/bin/jupyter-lab)
$ jupyter-lab -V
2.1.3

一旦它工作,您可以将PATH更改持久保存到您的 shell 配置文件(例如,最近 MacOS 上zsh~/.zprofile )。

这种方法与操作系统无关,并且在 MacOS、Linux 或 Windows 上同样有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM