Python 3.4和2.7的安装,没有Script文件夹和pip未安装。

24
我今天在Win7 X64上进行了Python 2.7.9和3.4.3的全新安装,发现在Python27和Python34文件夹中没有Script文件夹作为第一级子文件夹,但是在Tools中有一个Script文件夹。然而,在那个Script文件夹中我找不到pip,尽管pip应该默认随Python一起安装。当我在我的另一台电脑和笔记本电脑上进行相同的安装时,在Python27和Python34中都有Script文件夹(作为第一级子文件夹),其中包含pip。这是怎么回事?如何以这种方式安装pip和其他有用的脚本?[编辑]我尝试在Python34中使用python -m ensurepip命令,但是我收到以下错误信息:
Ignoring indexes: https://pypi.python.org/simple
Collecting setuptools
 Exception:
 Traceback (most recent call last):
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\basecommand.py", line 232, in main
  status = self.run(options, args)
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\commands\install.py", line 339, in run
  requirement_set.prepare_files(finder)
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\req\req_set.py", line 333, in prepare_files
  upgrade=self.upgrade,
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\index.py", line 326, in find_requirement
  file_locations, url_locations = self._sort_locations(locations)
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\index.py", line 158, in _sort_locations
  sort_path(os.path.join(path, item))
File "C:\Users\daiyue\AppData\Local\Temp\tmppvmc8dv1\pip-6.0.8-py2.py3-none-
any.whl\pip\index.py", line 139, in sort_path
  if mimetypes.guess_type(url, strict=False)[0] == 'text/html':
File "C:\Python34\lib\mimetypes.py", line 287, in guess_type
  init()
File "C:\Python34\lib\mimetypes.py", line 348, in init
  db.read_windows_registry()
File "C:\Python34\lib\mimetypes.py", line 255, in read_windows_registry
  with _winreg.OpenKey(hkcr, subkeyname) as subkey:
TypeError: OpenKey() argument 2 must be str without null characters or None,  not str

[编辑] 问题是由于在 HKEY_LOCAL_MACHINE 中存在多个空的注册表键,导致 mimetypes.py 中的 read_windows_registry() 搜索失败。这是导致问题解决的帖子:

Python‘pip’和Windows注册表损坏

谢谢


你为什么认为pip应该默认与Python一起安装?实际上它并没有默认安装。 - yole
2
@yole 在 pip 网站上指出:“Python 2.7.9 及更高版本(在 python2 系列中),以及 Python 3.4 及更高版本默认包含 pip”。 - daiyue
啊,确实。我不知道它被添加到2.7.9中了。 - yole
@halex 我尝试了 python -m pip install SomePackage,但是出现了 No module named pip 的错误。我是在 Python34 中尝试这个命令的。 - daiyue
pip是一个包,就像setuptools一样。许多安装指南(例如webfaction上的指南)都会教你假设你的系统上没有安装setuptools。这是因为这些工具在任何Python安装中默认情况下都__不__被安装。但是,有许多发行版在安装时会提供这些软件包。其中之一是Python(x,y)发行版(尽管我认为pip在其中没有包含,但以它为例)。 - Luis Masuelli
显示剩余4条评论
17个回答

15
如果你使用了PSF(python.org).msi Windows安装器,pip(和依赖项)应该已经安装在pythonxy/Lib/site-packages中,对于3.4.0+和2.7.9+版本。还应该有包含约5个.exe文件的pythonxy/Scripts,这是安装过程的最后一部分。命令提示符窗口应该会短暂出现。也许您在执行安装时没有勾选[ ] install pip(虽然默认情况下应该会勾选)。也许有错误被您忽略了。
无论如何,你应该已经拥有pythonxy/Lib/ensurepip/*来为2.7和3.4运行该模块。在命令提示符中,尝试分别在.../python27和.../python34中输入 python -m ensurepip

3
你好,我尝试了python -m ensurepip,但是在OP中列出了一些错误。C:\Pythonxy\Lib\site-packages中除了一个README文件外什么也没有。顺便问一下,PSF是什么?我下载了2.73.4Windows安装程序。 - daiyue
1
Python软件基金会负责运营xyz.python.org网站。我在python-list上看到了你的帖子。错误信息表明arg 2是一个带有null的字符串,这似乎是某个地方的bug。如果没有答案,请考虑在bugs.python.org上报告bug。 - Terry Jan Reedy
使用“python -m ensurepip --user”命令,可解决权限问题。 - William Humphries

9

我也遇到了同样的问题,重新安装并没有解决。

最后我通过以管理员身份运行python -m ensurepip来解决了这个问题。


直到我将PYTHONPATH环境变量更改为损坏的Python安装目录(该变量由另一个与我的损坏版本冲突的Python安装设置)之后,此命令才能正常工作。 - Honza Vojtěch

5
这个问题是一个官方的错误: Issue23604
我曾遇到过同样的问题,并成功使用Swarley博客中的方法进行修复。

2
今天我在安装Python 2.7.13时遇到了同样的问题;经过一番调查,我发现v.3.60(“Anaconda”)已经存在于我的电脑中(它是几周前安装的Microsoft Visual Studio 2017附带的)。
我怀疑注册表中存在路径不匹配的问题,因此我尝试删除Python v.3.60和2.17,并通过删除HKCU\Software\Python键来清理注册表(由于某些原因,该键仍然存在)。
之后,我成功地安装了版本2.7.13,这次\scripts文件夹存在,并且包含了所有预期的内容。
我不知道再次安装v.3.6是否会导致任何问题:目前我正在为v.2.7开发,所以暂时不会尝试这个。
希望这能有所帮助。
Max-意大利
编辑: 我进行了进一步的调查,并认为我已经发现了原因(在我这种情况下),为什么\Scripts文件夹丢失:我要安装Python的路径位于虚拟驱动器中。
在我的电脑上,我只有一个分区(C:),我将一个文件夹(C:\Development)映射为D:,然后我尝试在D:\Python27上安装Python;显然这是不好的,会导致安装程序出现问题。
在发现这一点之后,我尝试安装到真实路径,现在一切似乎都很好。
Max。

2

Windows 10。我在将Python 2.7安装到C:/Program Files/Python27时遇到了问题。我认为这是路径问题。解决方法是在C:/Python27中进行安装,然后将该安装中的Scripts文件夹复制到C:/Program Files/Python27中的安装中。其他所有内容(包括Python和Scripts的路径)都没问题。


2

1

猜猜看?如果你安装了NetBeans(或者可能是GlassFish),那么它可能会破坏pip的安装!

细节:NetBeans安装程序中存在一个错误,有时会以其他安装程序不希望的方式破坏Windows注册表。

@J3soon的答案已经接近了答案,但是Swarley的博客文章在我的环境中没有解决这个问题,因为它不是空字符而是另一种注册表损坏

以下是我如何解决这个问题的方法。运行以下PowerShell脚本:

$local_key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
$machine_key = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*'
$machine_key6432 = 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
$items = Get-ChildItem @($local_key, $machine_key, $machine_key6432)
$ErrorActionPreference = 'Stop'

foreach ($item in $items) {
    Write-Output $item.PSPath
    $null = Get-ItemProperty $item.PSPath
}

它将把注册表键名写入输出。如果它打印出错误,请取出它最后一个打印的键并从注册表中删除(使用PowerShell或regedit或您喜欢的任何工具)。

之后,重新安装Python,应该会按预期安装pip。


1

基于这里的内容和我在其他地方找到的内容,以下是我如何解决它的方法:

卸载已安装的任何内容。 进入注册表编辑器,找到 HKLM/SOFTWARE/Python 并删除整个 python 部分。 重新安装 Python。

这次安装包含了 scripts 文件夹。

希望这能帮助到某些人。


0

很简单,下载这个文件Get Pip。将其保存在本地并以.py为扩展名。

在Windows中运行:

1.) 打开cmd

2.) 输入“python”并检查是否已安装Python

3.) 输入“python filePath.py”(例如,如果您将文件保存在C驱动器中,请转到特定文件夹并运行命令-此处的“filePath.py”是您保存的文件名)

命令看起来像这样

4.) 祝贺,现在应该可以工作了

5.) 要检查pip是否正确安装,请输入“pip --version”


0

我之前也遇到过同样的问题,但最终成功解决了。问题在于当你按照默认配置安装Python时,它会将Python文件夹安装在"c:\user\Appdata......"这个位置,这个路径又长又难以找到。为了避免这种情况,首先需要从控制面板中完全卸载系统中的Python 3.7。然后再次安装Python时选择“自定义安装”选项,在下一页中将默认位置更改为C:/Python/Python37-32,并选择所需的复选框,最后点击安装即可。这样应该就能解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接