【问题标题】:Problem creating python virtual env on CentOS 7在 CentOS 7 上创建 python 虚拟环境的问题
【发布时间】:2022-06-17 15:41:31
【问题描述】:

我在 CentOS 7 上:

$ cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)

我在设置虚拟环境时遇到问题:

$ python3 -m venv /home/noien/myVenv
Error: Command '['/home/noien/myVenv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.

看起来 ensurepip 有问题:

$ python3 -m ensurepip
Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/lib64/python3.6/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/usr/lib64/python3.6/ensurepip/__init__.py", line 232, in _main
    default_pip=args.default_pip,
  File "/usr/lib64/python3.6/ensurepip/__init__.py", line 129, in _bootstrap
    shutil.copy(whl, tmpdir)
  File "/usr/lib64/python3.6/shutil.py", line 245, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib64/python3.6/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib64/python3.6/ensurepip/_bundled/setuptools-40.6.2-py2.py3-none-any.whl'

寻找那个文件,不仅文件不存在,而且路径停在/usr/lib64/python3.6/ensurepip/ - 没有/usr/lib64/python3.6/ensurepip/_bundled

真正令人困惑的是,我在同一版本上还有另一台 CentOS 机器,两台机器上的所有内容都是最新的,另一台机器上也没有 _bundled 子目录,而另一台机器上的一切正常。

我试过了:

yum reinstall python3-pip
yum reinstall python3
yum reinstall setuptools
yum reinstall python36-devel
yum reinstall python36-setuptools
yum reinstall python36-virtualenv
yum reinstall python36-virtualenv
python3.6 -m pip install --upgrade pip

查看/usr/lib64/python3.6/ensurepip/__init__.py 我看到了,除此之外:

_SETUPTOOLS_VERSION = "40.6.2"
_PIP_VERSION = "9.0.3"

我已经尝试调整那里的版本以匹配我所拥有的版本,我使用pip3 -V 获得,但没有运气。也许这不是获取版本的正确方法?

有人有什么想法吗?令人困惑的是,我可以在另一台机器上创建一个虚拟环境,而我看不出两台机器之间有多大区别。

【问题讨论】:

  • 我尝试在安装了 python3、python3-setuptools、python3-libs、python3-pip RPM 的 Centos 7 系统上创建一个 venv,但没有任何问题。有趣的是,我也没有文件/usr/lib64/python3.6/ensurepip/_bundled
  • 谢谢。真是莫名其妙。也许他们最近摆脱了 _bundled 目录?坦率地说,我用 yum 重新安装软件包非常绝望。我只剩下“某处某处损坏了,我看不到什么,要修复,请重新安装操作系统”。哪个...不太好?
  • 在重新安装之前用rpm -qV RPMNAME检查,或者用rpm -qVa检查整个系统,但是阅读手册页如何正确解释输出。并非发现的每个差异都是错误,例如将报告所有编辑的配置文件。
  • 除了我重新安装的软件包之外,我还应该查看其他软件包吗?
  • 我不知道,我可以访问的系统(顺便说一句,同版本 7.9.2009)只有我提到的那四个 python3 包。

标签: python centos7 virtual


【解决方案1】:

我遇到了同样的问题。重新安装不起作用,但是,起作用的是删除然后安装。

yum remove python36-pip
yum install python3-pip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多