pipenv install 报错

本文详细介绍了在使用pipenv安装Python包时遇到TypeError错误的原因及解决方案,指出问题源于pip版本不兼容,并提供了重新安装特定版本pip的方法。

TypeError: 'module' object is not callable

 

使用方法:

pipenv install

# 默认为该目录创建一个python虚拟环境 位于 用户名.local/share/virtualenvs/项目目录名-随机字符串
# 提供可选参数 --two/--three 分别为python2,3 也可以 --python 3.6 指定一个版本号 

pipenv install requests --dev
# 在development分区安装 requests 当别人收到你的项目文件运行 pipenv install --dev 就会安装requests 指定版本用 requests==2.19.1

pipenv run new_spider.py
# 使用pipenv的虚拟环境运行new_spider.py脚本

pipenv uninstall requests
# 卸载requests包

pipenv --venv
# 查看当前项目所使用虚拟环境的位置

pipenv graph
# 查看包依赖结构

pipenv --rm
# 删除该项目的虚拟环境

pipenv shell
# 激活虚拟环境的python 此时使用pip可以安装包到虚拟环境 但是不会添加到Pipfile

pipenv check
# 使用检查PEP安全漏洞

# 如果pipenv install 安装模块的速度很慢 可以设置使用国内源
vi ./Pipfile
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"

一直以来使用pipenv都没有出错 今天却遇到了这个

 pipenv install 报错信息

$ pipenv install requests     
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
c/lib/python3.7/site-packages/pipenv/utils.py", line 250, in actually_resolve_deps
    req = Requirement.from_line(dep)
  File "/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 704, in from_line
    line, extras = _strip_extras(line)
TypeError: 'module' object is not callable
/usr/local/Cellar/pipenv/2018.7.1/libexec/lib/python3.7/site-packages/pipenv/_compat.py:113: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/var/folders/7p/zjzc1bjd3qjfyqf69f6zlxmc0000gn/T/pipenv-s0IwMW-requirements'>
  warnings.warn(warn_message, ResourceWarning)

解决方法 : 是因为pip的版本问题

pipenv version 2018.7.1 支持完美的pip版本是pip 18.0

所以 执行以下命令 重装pip为18.0(该命令只对当前项目的虚拟环境生效 不影响全局pip)

pipenv run pip install pip==18.0

如果想全局解决,不用再每个项目解决一次

python3 -m pip install pip==10.0.1
# 或者
python -m pip install pip==10.0.1

全局解决的方法失效了 欢迎有解决的朋友评论一下

### 可能的原因分析 `pipenv install tkinter` 失败的主要原因可能在于 `tkinter` 并不是一个可以通过 `pip` 或 `pipenv` 安装的独立库。实际上,`tkinter` 是 Python 的标准库之一[^1],它通常随 Python 解释器一起提供。如果尝试通过 `pipenv` 来安装 `tkinter`,可能会导致错误。 以下是可能导致失败的具体原因: 1. **Python 编译时未启用 `tkinter` 支持** 在某些情况下,特别是使用自定义编译的 Python 版本或者轻量级发行版(如 Anaconda),`tkinter` 可能并未被包含在内。这会导致即使 Python 已经安装完成,也无法正常使用 `tkinter`[^3]。 2. **操作系统层面缺少依赖项** 对于 Linux 用户来说,如果没有安装必要的开发包(例如 `tk-dev` 或者类似的软件包),则无法成功构建带有 `tkinter` 支持的 Python 环境[^4]。 3. **虚拟环境中缺失配置** 使用 `pipenv` 创建的虚拟环境可能继承了一个不支持 `tkinter` 的基础解释器版本。因此即便是在虚拟环境下运行程序,仍然会出现找不到模块的情况。 --- ### 解决方案 #### 方法一:确认当前 Python 是否已内置 `tkinter` 可以直接测试现有 Python 环境是否已经包含了 `tkinter` 库: ```python import tkinter print(tkinter.TkVersion) ``` 如果这段代码能够顺利执行,则说明该 Python 环境下已经有可用的 `tkinter`;反之则是需要重新设置合适的 Python 发行版[^3]。 #### 方法二:针对不同平台修复依赖关系 - **Windows**: 一般而言 Windows 上的标准 CPython 都预装好了 `tkinter` ,只需确保下载的是官方发布的完整安装包即可[^2]。 - **macOS**: macOS 自带的 Python 往往也集成了图形界面的支持组件,但如果遇到问题可以考虑利用 Homebrew 更新 tcl/tk 至最新稳定版本再重试链接操作[^4]: ```bash brew install tcl-tk export PATH="/usr/local/opt/tcl-tk/bin:$PATH" ``` - **Linux (Ubuntu/Debian)**: 若发现缺乏必要文件可依照如下命令补齐所需资源之后再次激活项目中的 virtualenv : ```bash sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install python3-tk ``` #### 方法三:调整 Pipenv 设置以适配特定需求 假如以上措施仍未能奏效的话,还可以试着修改 `.toml` 文件来强制指定兼容性的参数选项。比如明确声明所期望使用的 Python 子版本号以及附加插件列表等等[^1]: ```ini [[source]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] pywin32 = "*" pefile = "*" [requires] python_version = "3.6" ``` 随后销毁旧有 cache 数据并重建整个 dependency tree 结构: ```bash rm -rf ~/.local/share/virtualenvs/* pipenv --clear pipenv sync ``` --- ### 总结 综上所述,“pipenv install tkinter”之所以会报错主要是因为误解了其作为核心组成部分而非第三方扩展的地位所致。要彻底解决问题除了验证本地 runtime environment 正确无误之外还需要兼顾跨平台特性差异带来的影响因素共同考量处理方式[^1]^. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值