经常遇到的 Pipenv 问题 — pipenv 文档
经常遇到的 Pipenv 问题
Pipenv 正在不断被志愿者改进,但仍然是一个非常年轻的项目,资源有限,并且有一些需要处理的怪癖。 我们需要每个人的帮助(包括你的!)。
以下是人们在使用 Pipenv 时遇到的一些常见问题。 请查看以下内容,看看它们是否能解决您的问题。
笔记
首先确保您运行的是最新的 Pipenv 版本!
☤ 您的依赖项无法解析
确保您的依赖项实际上 do 解析。 如果您确信它们是,您可能需要清除解析器缓存。 运行以下命令:
pipenv lock --clear
然后再试一次。
如果这不起作用,请尝试手动删除整个缓存目录。 它通常是以下位置之一:
~/Library/Caches/pipenv
(macOS)%LOCALAPPDATA%\pipenv\pipenv\Cache
(Windows)~/.cache/pipenv
(其他操作系统)
Pipenv 不安装预发布(即 带有 alpha/beta/etc 的版本。 后缀,例如 1.0b1)。 您需要在命令中传递 --pre
标志,或设置
[pipenv]
allow_prereleases = true
在你的 Pipfile 中。
☤ 没有命名的模块
这通常是将 Pipenv 与系统包混合的结果。 我们 强烈 建议在隔离环境中安装 Pipenv。 卸载所有现有的 Pipenv 安装,并参见 ☤ 安装 Pipenv 选择一种推荐的方式来安装 Pipenv。
☤ 找不到我安装的 pyenv 的 Python
确保正确设置了 PYENV_ROOT
。 Pipenv 仅支持 CPython 发行版,版本名称类似 3.6.4
或类似名称。
☤ Pipenv 不尊重 pyenv 的全局和本地 Python 版本
Pipenv 默认使用它安装的 Python 来创建 virtualenv。 您可以将 --python
选项设置为 $(pyenv which python)
以使用您当前的 pyenv 解释器。 有关详细信息,请参阅 ☤ 指定包的版本 。
☤ 值错误:未知区域设置:UTF-8
macOS 在其区域设置检测中存在一个错误,导致我们无法正确检测您的 shell 编码。 如果语言环境变量未指定编码,这也可能是其他系统上的问题。
解决方法是将以下两个环境变量设置为标准本地化格式:
LC_ALL
LANG
例如,对于 Bash,您可以将以下内容添加到 ~/.bash_profile
:
export LC_ALL='en_US.UTF-8'
export LANG='en_US.UTF-8'
对于 Zsh,要编辑的文件是 ~/.zshrc
。
笔记
您可以将 en_US
和 UTF-8
部分更改为您使用的语言/区域设置和编码。
☤ shell 没有在提示中显示 virtualenv 的名称
这是故意的。 您可以使用 shell 插件或巧妙的 PS1
配置自行完成。 如果你真的想要它回来,使用
pipenv shell -c
取而代之(在 Windows 上不可用)。
☤ Pipenv 不尊重 setup.py 中的依赖项
不,它不是故意的。 Pipfile 和 setup.py 用于不同的目的,默认情况下不应相互考虑。 有关更多信息,请参阅 ☤ Pipfile 与 setup.py。
☤ 在Supervisor 程序中使用pipenv run
当你用 pipenv run ...
配置一个监督程序的 command
时,你需要正确设置 locale 环境变量以使其工作。
在 /etc/supervisor/supervisord.conf
的 [supervisord]
部分下添加此行:
[supervisord]
environment=LC_ALL='en_US.UTF-8',LANG='en_US.UTF-8'
☤ 在 Locking dependencies... 期间引发异常
运行 pipenv lock --clear
并重试。 锁定序列缓存结果以加速后续运行。 如果错误导致格式损坏,即使在修复错误之后,缓存也可能包含错误结果。 --clear
刷新缓存,从而删除不良结果。