python - 我的项目和 pipenv 使用的 python 解释器的耦合

标签 python pipenv

安装我的要求失败:

» pipenv --python 3.6.4 install
Creating a virtualenv for this project…
Using /home/myuser/.pyenv/versions/3.6.4/bin/python3.6m to create virtualenv…
⠋Running virtualenv with interpreter /home/myuser/.pyenv/versions/3.6.4/bin/python3.6m
Using base prefix '/home/myuser/.pyenv/versions/3.6.4'
New python executable in /home/myuser/.local/share/virtualenvs/svc-J_VF07t3/bin/python3.6m
Also creating executable in /home/myuser/.local/share/virtualenvs/svc-J_VF07t3/bin/python
Please make sure you remove any previous custom paths from your /home/myuser/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.

Virtualenv location: /home/myuser/.local/share/virtualenvs/svc-J_VF07t3
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
n2.7/site-packages/pipenv/resolver.py", line 11, in <module>
    import pipenv.utils
  File "/home/myuser/.local/lib/python2.7/site-packages/pipenv/../pipenv/__init__.py", line 17, in <module>
    from .cli import cli
  File "/home/myuser/.local/lib/python2.7/site-packages/pipenv/../pipenv/cli.py", line 10, in <module>
    import delegator
  File "/home/myuser/.local/lib/python2.7/site-packages/pipenv/vendor/delegator.py", line 8, in <module>
    from pexpect.popen_spawn import PopenSpawn
  File "/home/myuser/.local/lib/python2.7/site-packages/pipenv/vendor/pexpect/popen_spawn.py", line 14, in <module>
    from Queue import Queue, Empty  # Python 2
ModuleNotFoundError: No module named 'Queue'

/home/myuser/.local/lib/python2.7/site-packages/pipenv/utils.py:1147: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/tmp/pipenv-cLTIqh-requirements'>
  warnings.warn(warn_message, ResourceWarning)

为什么选择 Python 2.7?让我们检查 virtualenv 中使用的 python 版本:

» pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
. /home/myuser/.local/share/virtualenvs/svc-J_VF07t3/bin/activate
» . /home/myuser/.local/share/virtualenvs/svc-J_VF07t3/bin/activate
» python --version
Python 3.6.4

正确! pipenv 本身呢:

» which pipenv
/home/myuser/.local/bin/pipenv

看来问题在于,尽管我的virtualenv 使用的是Python 3,但pipenv 本身使用的是Python 2 (系统 Python)。 pipenv 已安装为 recommended ,使用系统范围的 python 解释器:

pip install --user pipenv

而且确实安装了,并且发现:

» which pipenv
/home/myuser/.local/bin/pipenv

» pipenv --version
pipenv, version 11.1.3

根据我的项目将要使用的 python 解释器强制重新安装 pipenv 没有任何意义。

为什么 pipenv 在 vi​​rtualenv 中安装包时使用系统 python,而不是使用该 virtualenv 的 python?如何分离 pipenv 使用的 python 解释器和我的项目使用的 python 解释器?

最佳答案

我有一个非常相似的问题。当摆弄 pipenv 和 python 3 的新次要版本时,它开始发生。尽管这听起来没有帮助,但解决方案是打开一个新的 shell(不是采购 shell)并调用 pipenv shell,就像我的 python 管理一样.py 命令。

首先,我的错误是在整个字符串插值 '%d' % foo 中提示 python 2.7,但这在 python 3 中有效。

关于python - 我的项目和 pipenv 使用的 python 解释器的耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49728727/

相关文章:

python csv writer 添加额外的引号

python - 如果您使用 lower 和 caps 作为搜索名称,我需要这个工作(它为 cap 和 lower 提供了不同的内容)

python - Pipenv:无条件安装平台特定包的依赖项?

django - VS Code 不使用 pipenv .env 文件

Python:使用 ascii 码打印

python - 是否可以从 setuptools setup.py 中要求 PyQt?

python - @staticmethod 或类外函数?

python - 如果我只在测试套件运行期间使用一个库,它应该在我的 Pipfile 中的普通包还是开发包中?

python - 如何查看 pipenv 安装的软件包的当前版本?

python - 使用 docker-compose up 启动 redis-server