【问题标题】:Pip --user installs package to Default user directory on Windows 10Pip --user 将软件包安装到 Windows 10 上的默认用户目录
【发布时间】:2019-02-16 20:41:51
【问题描述】:

我在安装了 Python 2.6 和 2.7 的 Windows 10 上遇到问题。

python -m pip install myPack --no-index --find-links=. --user

当使用用户 AutoUser 运行此命令时,它会将 myPack 安装到 Default 用户目录 C:\Users\Default\Python\Python27\site -packages 或 C:\Users\Default\Appdata\Roaming\Python\site-packages 改为 C:\Users\Autouser\Appdata\Roaming\Python\site-packages

  • Windows 登录后不久自动安装,但我可以在日志中看到“查询用户”返回一行并带有 AutoUser(在调用 pip 之前)。
  • 其他操作系统没有这个问题。
  • Windows 10 上的复制不稳定:可能是 100 的 1 倍。
  • 这些机器上也安装了 python 2.6 的事实,但我不确定它是否有意义:2.6 在路径系统变量中比 2.7 晚。 Here 他们写的可能是个问题,但是 pip 不会混淆 python 版本,它会混淆用户的目录。

路径:

C:\ProgramData\Oracle\Java\javapath;C:\Python27\;C:\Python27\Scripts\;C:\Python26\;C:\Python26\Scripts;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\ProgramData\chocolatey\bin;

Python 版本:

python --version
Python 2.7.13

Pip 版本:

python -m pip --version
Pip version: pip 9.0.1 from C:\Python27\lib\site-packages (python 2.7) 

【问题讨论】:

  • 我认为这个答案会很有用。 stackoverflow.com/a/34803087/5774004
  • %APPDATA% 的值是多少?
  • 从您运行的命令中,很明显 Python 2.6 在这里没有什么可做的。但是真实的场景呢?安装是如何触发的?是来自服务吗?启动命令的用户是什么?您应该在启动命令之前打印其环境。 请务必指定完整路径,否则可能会造成混淆。所以不可复制?你确定之前的某些模块安装没有任何关系吗?
  • @CristiFati,安装是从我们的软件自动触发的:1)它将目标虚拟机恢复到默认快照,2)等待来自内置“dropper”服务的握手; 3)向这个“dropper”发送命令以运行包含“pip install”的powershell脚本。 4) 脚本作为 AutoUser 运行(我使用“查询用户”记录它)。我未能可靠地重现该问题。至于打印环境,除了 PATH,您究竟会推荐什么?其他模块在这里肯定无关:它们根本不使用python。

标签: python windows pip windows-10


【解决方案1】:

安装时尝试以管理员身份运行 cmd

【讨论】:

  • 使用管理员 cmd 提示符导致 pip install <package> 将软件包安装到例如c:\program files\python39\scripts,而非管理员 cmd 提示符将其安装到例如`c:\users\\appdata\roaming\python\python39\scripts'.
【解决方案2】:

不幸的是,我不得不快速解决生产中的问题,所以我放弃并在没有 --user 选项的情况下将它安装到 c:/python27/... 目录。 我想@DeltaMarine101 的建议之一会有所帮助。

【讨论】:

  • “我放弃”不是解决方案。如果它被移到评论中会很好,但它不应该作为答案出现在这里,尤其是接受的答案。
【解决方案3】:

您可以尝试使用--target 选项设置安装目标,如下所示:

pip install --target=C:\Users\Autouser\Appdata\Roaming\Python\site-packages package_name

如果这不起作用,另一种选择是尝试像这样使用--install-option

pip install --install-option="--prefix=$PREFIX_PATH" package_name

最后,如果一切都失败了,这里还有另一种方法:

PYTHONUSERBASE=/path/to/install/to pip install --user

您可以使用python2.x -m pip install ...指定安装包的python版本

希望其中之一对您有所帮助! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2019-07-05
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    相关资源
    最近更新 更多