【问题标题】:Can't run pip from virtual environment, powershell, Windows 10无法从虚拟环境、powershell、Windows 10 运行 pip
【发布时间】:2020-05-25 08:12:25
【问题描述】:

第二次编辑:我无法让“-m venv”或“virtualenv”在 powershell 下工作。我发现了这个:

https://github.com/regisf/virtualenvwrapper-powershell

安装后,它工作了几个星期。 Windows 更新后,症状又回来了。我现在的解决方法:

c:\ new-virtualenvwrapper  booklook

它会给出错误消息,但您可以激活 venv

venv 内部:

 PS C:\py\venvs\booklook> env:PYTHONPATH = "C:\py\venvs\booklook\Lib\site-packages\"

 > python -m ensurepip
 > python -m pip install pip

使用文本编辑器编辑 pip.exe(在虚拟环境脚本目录中)

你会看到底部:c:\py\venvs\booklook\scripts\python.exe

将“脚本”更改为脚本

现在 pip 可以工作了....

我怀疑我的问题是从一些名为“Windows 别名”的功能开始的,该功能应该使 Windows 用户更方便地查找 python。如果您在使用 python 时遇到问题,请在开始框中键入“别名”并查找“管理 WIndows 执行别名”,关闭 python 别名。


修改为在激活 venv 后显示 sys.path。

“pip”在不使用虚拟环境时可以在 powershell cli 中正常工作。当虚拟环境启动时,我得到Fatal error in launcher: Unable to create process using '"c:\py\venvs\x1\scripts\python.exe" "C:\py\venvs\x1\Scripts\pip.exe"'

有各种类似问题的报告。我已经在虚拟环境中重新安装了 pip,并且我同时使用了python -m venv 和 virtualenv。以下是我在使用 -m venv 时遇到的错误。

编辑:我认为这是一个重要的线索:首先显示 python 不在我的常规路径中:

 PS C:\Users\pa2> python
 python : The term 'python' is not recognized as the name of a cmdlet, funct
 ....

然后,一旦我激活了 venv,就没有看起来有用的路径——尤其是“venvs\x1\Scripts”不存在。但是,如原始帖子所示,即使我专门调用由“-m venv”生成的 pip,该 pip 也会出错

 PS C:\Users\pa2> C:\py\venvs\x1\Scripts\Activate.ps1
 (x1) PS C:\Users\pa2> python
 Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)] on win32
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import sys
 >>> sys.path
 ['', 'C:\\py\\venvs\\x1\\Scripts\\python36.zip', 'C:\\users\\pa2\\appdata\\Local\\Programs\\Python\\Python36\\DLLs', 'C:\\users\\pa2\\appdata\\Local\\Programs\\Python\\Python36\\lib', 'C:\\users\\pa2\\appdata\\Local\\Programs\\Python\\Python36', 'C:\\py\\venvs\\x1']

我的问题是如何让它工作,以便 pip 仅在虚拟环境中运行和安装包?

部分问题是区分大小写,此处未显示,我尝试创建指向“脚本”的“脚本”符号链接,当我这样做时,我收到“没有名为 pip 的模块”消息。

在最后一行,当它失败时,诊断是在系统级别(我的 appdata 文件夹)而不是虚拟环境中谈论 pip。

这发生在我家用机器上的 3.6.6 和 3.8.1 上。它不会发生在我的工作机器上。

PS C:\> C:\users\pa2\appdata\Local\Programs\Python\Python36\python.exe -m venv /py/venvs/x1
PS C:\> C:\py\venvs\x1\Scripts\Activate.ps1
(x1) PS C:\> pip
Fatal error in launcher: Unable to create process using '"c:\py\venvs\x1\scripts\python.exe"  "C:\py\venvs\x1\Scripts\pip.exe" '
(x1) PS C:\> cd C:\py\venvs\x1\Scripts\
(x1) PS C:\py\venvs\x1\Scripts> python -m pip install rope
C:\py\venvs\x1\Scripts\python.exe: No module named pip
(x1) PS C:\py\venvs\x1\Scripts> curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(x1) PS C:\py\venvs\x1\Scripts> python get-pip.py
Collecting pip
  Using cached pip-20.0.2-py2.py3-none-any.whl (1.4 MB)
Collecting setuptools
  Using cached setuptools-45.2.0-py3-none-any.whl (584 kB)
Collecting wheel
  Using cached wheel-0.34.2-py2.py3-none-any.whl (26 kB)
Installing collected packages: pip, setuptools, wheel
Successfully installed pip setuptools wheel
(x1) PS C:\py\venvs\x1\Scripts> ls -l pip.exe


    Directory: C:\py\venvs\x1\Scripts


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2/9/2020   7:02 PM         106344 pip.exe


(x1) PS C:\py\venvs\x1\Scripts> date

Sunday, February 9, 2020 7:02:25 PM


(x1) PS C:\py\venvs\x1\Scripts> python -m pip
C:\py\venvs\x1\Scripts\python.exe: No module named pip
(x1) PS C:\py\venvs\x1\Scripts> pip
Fatal error in launcher: Unable to create process using '"c:\py\venvs\x1\scripts\python.exe"  "C:\py\venvs\x1\Scripts\pip.exe" ': The system cannot find the file specified.

(x1) PS C:\py\venvs\x1\Scripts> cat env:path
C:\py\venvs\x1\Scripts;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\RSA SecurID Token Common;C:\Program Files\RSA SecurID Token Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Gow\bin;C:\opt\spark\spark-2.4.0-bin-hadoop2.7\bin;c:\bin;C:\Program Files\Amazon\AWSCLI\bin\;C:\Users\pa2\AppData\Local\Microsoft\WindowsApps;
(x1) PS C:\py\venvs\x1\Scripts> .\python.exe .\pip.exe install rope
Traceback (most recent call last):
  File "C:\users\pa2\appdata\Local\Programs\Python\Python36\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\users\pa2\appdata\Local\Programs\Python\Python36\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File ".\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

【问题讨论】:

    标签: python powershell pip python-venv


    【解决方案1】:

    似乎在虚拟/venv 环境的根目录上启用的“区分大小写”属性在 Windows 下是有问题的。禁用它可以让pipvenv 下正确运行。

    测试:

    1. python -m venv myapp-venv
    2. fsutil file setCaseSensitiveInfo myapp-venv disable
    3. .\myapp-venv\Scripts\activate
    4. pip --version

    应该显示版本信息,而不是如下所示的错误消息:

    启动器中的致命错误:无法使用 '"c:\users\foo\myapp-venv\scripts\python.exe" "C:\Users\Foo\myapp-venv\Scripts\pip.exe" 创建进程--version': 系统找不到指定的文件。

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 2022-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多