使用Pipenv进行Python虚拟环境管理--conda平替

发布时间 2023-12-29 18:19:19作者: SWUFE_Computer

Pipenv 使用教程

Anaconda 是一个开箱即用的 Python 开发环境,同时也包含虚拟环境管理工具 conda。但是 Anaconda 的缺点包括:

  • 大型安装包:Anaconda 的安装包相对较大,需要消耗较多的磁盘空间。
  • 依赖冲突:在使用 Anaconda 时,若安装包过多可能会出现依赖冲突的情况,需要手动解决。此时则可建立Python虚拟环境来解决上述两个问题。

当您需要创建和管理Python虚拟环境时,可以使用 Pipenv。Pipenv 是一个简单易用的Python虚拟环境管理工具,除开 Pipenv 外,您还可以选择 pyenv、venv、virtualenv 或者是 Anaconda 内置的 conda。

安装 Pipenv:

同时按下 Windows徽标键+R,输入 cmd 进入命令提示符(或使用 Powershell)

命令提示符中运行以下命令:

$ pip install --user pipenv

安装完成后,输入 pip list 查看是否已安装成功

  • 查看版本命令
$ pipenv --version
  • 升级 Pipenv
$ pip install --upgrade pipenv
  • 卸载 Pipenv
$ pip uninstall pipenv

注意:这里安装 Pipenv 时使用的 pip 来源于您已经安装的Python环境,以下简称 base 环境。这意味着您至少需要在电脑上有一个已经安装好的Python环境(若同时安装了 Python 和 Anaconda,推荐使用 Python 而非 Anaconda)

  • 不少系统会对 base 环境进行保护,使之不能安装第三方包:已知 Windows、Ubuntu 不存在此类问题;MacOS 存在该问题,除了安装 base 环境外,还需要用 brew 或 homebrew 单独安装 Pipenv
  • 一些 Linux 发行版如 Arch Linux、openSUSE 存在该问题。对于 Arch Linux,可以从官方仓库下载 python-pipenv 包,openSUSE 请先使用 virtualenv 创建用户环境后再进行安装
  • 更多信息请参照 Pipenv 官方文档:https://pipenv.pypa.io/en/latest/

创建虚拟环境:

进入您的项目目录。如果尚未创建项目,请先创建一个

  • 运行以下命令
$ pipenv install

这将创建一个虚拟环境并安装您项目中(若已有 Pipfile)所需的所有依赖项。

  • 激活虚拟环境
$ pipenv shell

这将激活虚拟环境,您将在终端提示符中看到环境名称。

  • 在虚拟环境中安装依赖:
    在激活的虚拟环境中,您可以使用 Pipenv 安装依赖
$ pipenv install <包名>

同时也可以输入 pipenv -h 来获取命令列表

退出虚拟环境:

当您完成项目工作时,可以运行以下命令退出虚拟环境:

$ exit

这些步骤将帮助您安装和使用 Pipenv,请根据您的项目需要激活和退出虚拟环境。

常见问题:

  1. 在使用 Pipenv 创建虚拟环境时失败,出现类似这样的错误:
$ pipenv install

Creating a virtualenv for this project…
Pipfile: D:\my\weihub-flask\Pipfile
Using c:\users\lzjun\appdata\local\programs\python\python37-32\python.exe (3.7.1) to create virtualenv…
[ ===] Creating virtual environment...Already using interpreter c:\users\lzjun\appdata\local\programs\python\python37-32\python.exe
Using base prefix 'C:\\users\\lzjun\\appdata\\local\\programs\\python\\python37-32'
New python executable in C:\Users\lzjun\.virtualenvs\weihub-flask-j3rUnHkH\Scripts\python.exe
ERROR: The executable C:\Users\lzjun\.virtualenvs\weihub-flask-j3rUnHkH\Scripts\python.exe is not functioning
ERROR: It thinks sys.prefix is 'd:\\my\\weihub-flask' (should be 'c:\\users\\lzjun\\.virtualenvs\\weihub-flask-j3runhkh')
ERROR: virtualenv is not compatible with this system or executable
Note: some Windows users have reported this error when they installed Python for "Only this user" or have multiple versions of Python installed. Copying the appropriate PythonXX.dll to the virtualenv Scripts/ directory may fix this problem.

Failed creating virtual environment

[pipenv.exceptions.VirtualenvCreationException]:   File "c:\users\lzjun\appdata\local\programs\python\python37-32\lib\site-packages\pipenv\cli\command.py", line 254, in install
[pipenv.exceptions.VirtualenvCreationException]:       editable_packages=state.installstate.editables,
[pipenv.exceptions.VirtualenvCreationException]:   File "c:\users\lzjun\appdata\local\programs\python\python37-32\lib\site-packages\pipenv\core.py", line 1741, in do_install
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror,
[pipenv.exceptions.VirtualenvCreationException]:   File "c:\users\lzjun\appdata\local\programs\python\python37-32\lib\site-packages\pipenv\core.py", line 574, in ensure_project 
[pipenv.exceptions.VirtualenvCreationException]:       pypi_mirror=pypi_mirror, 
[pipenv.exceptions.VirtualenvCreationException]:   File "c:\users\lzjun\appdata\local\programs\python\python37-32\lib\site-packages\pipenv\core.py", line 506, in ensure_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       python=python, site_packages=site_packages, pypi_mirror=pypi_mirror
[pipenv.exceptions.VirtualenvCreationException]:   File "c:\users\lzjun\appdata\local\programs\python\python37-32\lib\site-packages\pipenv\core.py", line 935, in do_create_virtualenv
[pipenv.exceptions.VirtualenvCreationException]:       extra=[crayons.blue("{0}".format(c.err)),]
[pipenv.exceptions.VirtualenvCreationException]: Fatal Python error: initfsencoding: unable to load the file system codec

Traceback (most recent call last):
  File "C:\Users\lzjun\.virtualenvs\weihub-flask-j3rUnHkH\lib\encodings\__init__.py", line 31, in <module>
  File "C:\Users\lzjun\.virtualenvs\weihub-flask-j3rUnHkH\lib\codecs.py", line 481
    except UnicodeDecodeError, exc:
                             ^
SyntaxError: invalid syntax
  • 使用 pip list 检查你是否安装了 virtualenv,Pipenv 需要此软件包
  • 若问题仍存在,可能是你的系统中安装多有个版本的 Python,可以模糊搜索 Python*.dll ,把那些不相关的全部删除,重新试试。
  1. 在虚拟环境中运行Python程序时出现“无法初始化设备 PRN”

    不能在 cmd 和 Powershell 中直接输入Python代码
    这样就会像图片一样提示无法初始化设备 PRN
    注意:如果要使用交互式编程环境(REPL),则请输入 python 后回车进入Python运行环境,即可正常运行你的代码

  2. 一直卡在 Locking 过程中
    这是 Pipenv 正在检查依赖冲突和下载安装包(不会显示进度条),如果你觉得太慢可以选择跳过检查依赖冲突,pipenv install --skip-lock <软件包名>

  3. 如何提高下载速度
    修改 pip 镜像源为阿里云,清华源等镜像
    全局修改:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    如果你只想对当前项目进行修改,则可以修改 Pipfile [[source]] 中的 URL 项


作者:Taa Sun
编辑:米釉
西南财经大学电脑义务维修队