关于python:Pipenv:找不到命令

Pipenv: Command Not Found

我是Python开发的新手,正在尝试使用pipenv。 我运行了命令pip install pipenv,该命令成功运行:

1
2
3
4
...
Successfully built pipenv pathlib shutilwhich pythonz-bd virtualenv-clone
Installing collected packages: virtualenv, pathlib, shutilwhich, backports.shutil-get-terminal-size, pythonz-bd, virtualenv-clone, pew, first, six, click, pip-tools, certifi, chardet, idna, urllib3, requests, pipenv
...

但是,当我在新的根项目目录中运行命令pipenv install时,会收到以下消息:-bash: pipenv: command not found。 我怀疑可能需要修改.bashrc,但是不清楚要添加到文件中的内容还是不清楚是否需要修改。


这为我解决了:

1
sudo -H pip install -U pipenv


发生这种情况是因为您没有在全球范围内安装它。为了使其在您的path中可用,您需要使用sudo进行安装,如下所示:

1
$ sudo pip install pipenv


如果完成了用户安装,则需要将正确的文件夹添加到您的path变量中。

1
2
PYTHON_BIN_PATH="$(python3 -m site --user-base)/bin"
PATH="$PATH:$PYTHON_BIN_PATH"

请参阅pipenv的安装说明


我在Mac OS X 10.13 High Seirra上的pipenv存在相同的问题,另一台Mac可以正常工作。我使用Heroku部署Django服务器,其中一些部署在2.7中,有些部署在3.6中。因此,我需要2.7和3.6。当HomeBrew安装Python时,它使python指向原始2.7,而python3指向3.6。

该问题可能是由于$ pip install pipenv引起的。我检查了/ usr / local / bin,pipenv不存在。因此,我尝试了完全卸载:

1
2
3
4
5
6
7
8
$ pip uninstall pipenv

Cannot uninstall requirement pipenv, not installed
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

$ pip3 uninstall pipenv
Skipping pipenv as it is not installed.

然后重新安装即可立即使用:

1
2
$ pip3 install pipenv
Collecting pipenv

我尝试了这个:


python -m pipenv # for python2


python3 -m pipenv # for python3

希望这可以帮到你。


OSX的家伙,在这里!!!

正如@charlax回答的那样(对我而言,这是最好的),您可以使用更动态的命令来设置PATH,对于Mac用户而言,buuut无法正常工作,有时从站点获取的USER_BASE路径错误,因此您需要找出您的位置python安装是。

1
2
$ which python3
/usr/local/bin/python3.6

您将获得一个符号链接,然后需要找到源的符号链接。

1
2
$ ls -la /usr/local/bin/python3.6
  lrwxr-xr-x  1 root  wheel  71 Mar 14 17:56 /usr/local/bin/python3.6 -> ../../../Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6

(此../../../表示根)

因此,您找到了python路径(/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6),然后只需将?/ .bashrc放入其中,如下所示:


export PATH="$PATH:/Library/Frameworks/Python.framework/Versions/3.6/bin"


Python在哪里存储软件包

在进入安装pipenv的命令之前,值得了解pip在何处安装Python软件包。

全局站点软件包是Python安装软件包的地方,这些软件包将可供系统上的所有用户和所有Python应用程序使用。您可以使用以下命令检查全局站点包

1
python -m site

例如,在具有Python 3.7的Linux上,路径通常是

1
/usr/lib/python3.7/dist-packages/setuptools

用户站点软件包是Python安装仅对您可用的软件包的地方。但是,对于您创建的所有Python项目,这些包仍将可见。您可以使用以下方法

1
python -m site --user-base

在具有Python 3.7的Linux上,路径通常是

1
~/.local/lib/python3.7/site-packages

使用Python 3.x

在大多数Linux和其他Unices上,通常并行安装Python 2和Python 3。默认的Python 3可执行文件几乎总是python3。根据您的Linux发行版,pip可能具有以下任一版本:

1
2
3
4
pip3
python3-pip
python36-pip
python3.6-pip

的Linux

避免将pipsudo一起使用!是的,这是安装Python软件包的最方便的方法,可执行文件位于/usr/local/bin/pipenv,但这也意味着特定的软件包对于所有用户以及您创建的所有Python项目始终可见。而是使用按用户站点包,而不是--user

1
pip3 install --user pipenv

pipenv在以下位置可用

1
~/.local/bin/pipenv

苹果系统

在macOS上,建议使用Homebrew安装Python。您可以轻松升级Python,安装多个版本的Python,以及使用Homebrew在版本之间切换。

如果您使用自制软件的Python,则禁用pip install --user。全局站点包位于

1
/usr/local/lib/python3.y/site-packages

并且您可以在此处安全地安装Python软件包。 Python 3.y还在以下位置搜索模块:

1
2
 /Library/Python/3.y/site-packages
 ~/Library/Python/3.y/lib/python/site-packages

视窗

出于传统原因,Python安装在C:\Python37中。 Python可执行文件通常命名为py.exe,您可以使用py -m pip运行pip

全局站点包安装在

1
C:\Python37\lib\site-packages

由于通常不共享Windows设备,因此也可以在全局范围内安装软件包

1
py -m pip install pipenv

pipenv现在在以下位置可用

1
C:\Python37\Scripts\pipenv.exe

我不建议使用--user在Windows中安装Python软件包,因为默认的用户site-package目录位于Windows漫游配置文件中

1
2
C:\Users\user\AppData
oaming\Python\Python37\site-packages

在终端服务(远程桌面,Citrix等)中以及在公司环境中登录/注销时,将使用漫游配置文件。大型漫游配置文件可能导致Windows中缓慢的登录,注销和重新启动。


通过覆盖全局/系统管理的pip安装,全局安装pipenv可能产生不利影响,从而在尝试运行pip时导致导入错误。

您可以在用户级别安装pipenv:

pip install --user pipenv

这应该在/home/username/.local中的用户级别上安装pipenv,以使其与pip的全局版本不冲突。就我而言,在运行'--user'开关后仍然无法正常工作,因此我运行了更长的"修复我搞砸了的东西"命令一次,以恢复系统管理的环境:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

^在这里找到:升级pip后出错:无法导入名称main

然后执行以下操作:

mkdir /home/username/.local ...(如果尚不存在)

export PYTHONUSERBASE=/home/username/.local

确保导出生效(在此过程中,只对我进行一次咬合):

echo $PYTHONUSERBASE

然后,我运行了pip install --user pipenv,一切都很好。然后,我可以从CLI运行pipenv,它不会覆盖全局/系统管理的pip模块。当然,这是特定于用户的,因此您要确保在以希望使用pipenv的用户身份工作时以这种方式安装pipenv。

参考文献:

https://pipenv.readthedocs.io/en/latest/diagnose/#no-module-named-module-name https://pipenv.readthedocs.io/en/latest/install/#pragmatic-installation-of-pipenv https://pip.pypa.io/zh_CN/stable/user_guide/#user-installs


在Mac OS X Catalina上,它似乎遵循Linux路径。使用以下任何一种:

1
2
3
4
pip install pipenv
pip3 install pipenv
sudo pip install pipenv
sudo pip3 install pipenv

基本上在这里安装pipenv:

1
/Users/mike/Library/Python/3.7/lib/python/site-packages/pipenv

但是它不是可执行文件,因此永远找不到。唯一对我有用的是

1
pip install --user pipenv

这似乎导致上述目录中的__init__.py文件具有正确显示pipenv命令的内容。

当有关此问题的所有其他发布和评论建议都失败时,一切都开始起作用。

pipenv软件包当然看起来很挑剔。


安装pipenv(sudo pip install pipenv)后,尝试运行pipenv shell命令时,我始终收到"找不到命令"错误。

我终于用以下代码修复了它:

1
2
pip3 install pipenv
pipenv shell

对于Windows用户,这可能是由于与virtualenv的安装冲突。对我来说,当我先卸载virtualenv和pipenv,然后仅安装pipenv时,它就起作用了。

1
2
3
pip uninstall virtualenv
pip uninstall pipenv
pip install pipenv

现在pipenv install xxx为我工作


在某些pip旧版本中:

1
2
sudo easy_install pip
sudo pip install pipenv

我已将其固定为:

1
sudo -H pip install -U pipenv

您可能考虑通过pipsi安装pipenv

1
2
3
curl https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get -pipsi.py | python3
pipsi install pew
pipsi install pipenv

不幸的是,在撰写本文时,macOS + python3存在一些问题,请参见1、2。就我而言,我不得不将bashprompt更改为#!/Users/einselbst/.local/venvs/pipsi/bin/python