便携式Python - 无法安装pip

11

我正在尝试在我的USB驱动器上安装pip。按照这个网站上的说明,我下载了get-pip.py并运行了python get-pip.pypython在环境路径中)。不幸的是,脚本遇到了错误。我已经将日志文件上传到这里。错误本身是:

Exception:
Traceback (most recent call last):
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2251, in parsed_version
    return self._parsed_version
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2344, in __getattr__
    raise AttributeError(attr)
AttributeError: _parsed_version

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2259, in version
    return self._version
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2344, in __getattr__
    raise AttributeError(attr)
AttributeError: _version

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\commands\install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\req.py", line 1420, in install
    if existing_distribute in distribute_requirement:
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2643, in __contains__
    if self.index: item = item.parsed_version  # only get if we need it
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2253, in parsed_version
    self._parsed_version = pv = parse_version(self.version)
  File "c:\users\elyashic\appdata\local\temp\tmprkcrtx\pip.zip\pip\_vendor\pkg_resources.py", line 2267, in version
    "Missing 'Version:' header and/or %s file" % self.PKG_INFO, self
ValueError: ("Missing 'Version:' header and/or PKG-INFO file", distribute [unknown version] (i:\portableapps\portable python 3.2.5.1\app\scripts))

有人能给我解释一下我做错了什么吗?

我使用的是便携式 Python 3.2.5.1,安装后就尝试着安装 pip。

4个回答

13

如果你所说的“Portable Python”是Python.org提供的可嵌入zip文件,那么这篇指南解决了我的问题:https://michlstechblog.info/blog/python-install-python-with-pip-on-windows-by-the-embeddable-zip-file/

以下是文本内容,以防上述链接失效:

下载最新版本的Python(例如Python 3.6.5)并将zip文件解压到目录(例如D:\python3.6.5)。
下载最新版本的get-pip到Python安装路径,并开始安装。

> d:\> cd /d D:\Python3.6.5 D:\Python3.6.5> python get-pip.py ...
> Installing collected packages: pip, setuptools, wheel Successfully
> installed pip-10.0.1 setuptools-39.2.0 wheel-0.31.1

如果您在代理后面,请添加“--proxy”开关

D:\Python3.6.5> python get-pip.py --proxy="http://192.168.254.1:8888"

很遗憾,在默认配置下,您无法加载通过pip安装的任何模块,包括pip本身。因为sys.path变量只包含Python Zip文件和Python执行文件所在目录的路径。

>>> import sys
>>> print(sys.path)
['D:\\Python3.6.5\\python36.zip', 'D:\\Python3.6.5']
>>> import pip
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pip'

尝试通过设置PYTHONPATH变量扩展变量的任何操作都会被忽略。根本原因是可嵌入的zip文件安装包包含一个名为python36._pth的文件,它覆盖了所有其他设置sys.path变量的可能性。 sys.path包含python查找模块的所有目录。

要设置sys.path变量,请打开_pth文件并将以下路径添加到文件末尾。 将“D:\Python3.6.5”替换为您的安装目录。

D:\Python3.6.5
D:\Python3.6.5\DLLs
D:\Python3.6.5\lib
D:\Python3.6.5\lib\plat-win
D:\Python3.6.5\lib\site-packages

或者重命名 python36._pth 文件

D:\Python3.6.5> ren python36._pth python36._pth.save

并为当前用户设置PYTHONPATH环境变量。

setx PYTHONPATH "D:\Python3.6.5;D:\Python3.6.5\DLLs;D:\Python3.6.5\lib;D:\Python3.6.5\lib\plat-win;D:\Python3.6.5\lib\site-packages"

或整个系统

setx /M PYTHONPATH "D:\Python3.6.5;D:\Python3.6.5\DLLs;D:\Python3.6.5\lib;D:\Python3.6.5\lib\plat-win;D:\Python3.6.5\lib\site-packages"

我在便携式 Windows 上使用 python-3.10.7 进行了尝试,虽然在 c:\apps\python-3.10.7\python310._pth 设置文件中使用了相对文件夹,例如 .\Lib\site-packages,以将文件夹添加到 Python syspath 数组中。运行命令 C:\apps\python-3.10.7\python.exe -m site 来列出 syspath 设置。例如安装 cryptodome 包 C:\apps\python-3.10.7\scripts\pip.exe install pycryptodomex - Whome
谢谢!这是让我抓狂的重要部分 - “尝试通过设置PYTHONPATH变量来扩展变量的任何尝试都会被忽略。根本原因是可嵌入的zip文件安装包包含一个名为python36._pth的文件,它覆盖了所有其他设置sys.path变量的可能性。sys.path包含Python查找模块的所有目录。” - Martin Melka

11

我遇到了与便携式 Python 3.2.5.1 相同版本的问题。 App\Scripts\easy_install.py 中的 easy_install.py 脚本也对我失效,由于脚本内部存在一些语法错误。

在经过多次失败后,我找到了 https://winpython.github.io/。 它接手了便携式 Python 的工作。


顶顶顶。我不知道为什么在谷歌搜索便携式Python时它没有排名第一。 - wuppi
1
嘿,我们是完全便携的,只需下载我们的安装程序 - WinPython - sigmaxf
1
奇怪的方法,但是为了他们的辩护:“WinPython文件夹可以移动到任何位置” - WinPython - Wouter
1
WinPython比Portable Python大几倍,虽然我不敢说它是“臃肿的”,但请记住它带有许多模块。 - jorvaor

2

由于您正在使用便携式Python,安装模块的最佳方法是使用easy install。 进入您的便携式Python文件夹目录: Portable Python 2.7.6.1

接下来,在该位置打开命令提示符,方法是Shift + Right Click

然后输入以下内容:

App\Scripts\easy_install.exe YourModuleNameHere

例子:

App\Scripts\easy_install.exe pyHook

1
对我来说,这个方法可以真正地通过pip获取更多的依赖项、预编译等内容。即:App\Scripts\easy_install.exe pip,然后例如:App\Scripts\pip.exe install pywinauto - akavel
4
我尝试使用这种方式安装pip,但出现了与提问者相同的错误。@akavel - Hadi Farah

0

如果有人在使用便携式Python pip时遇到问题,这是我让它正常工作的步骤。

  1. https://winpython.github.io下载便携式Python。

  2. 运行WinPython Command Prompt.exe并查找easy_install.exe

  3. WinPythonConsole中输入easy_install.exe [package_you_want_install]

软件包将安装在WinPython Python文件夹中。

对于那些想要在Node.js、电子项目中使用Python的人,您只需将WinPython Python子文件夹复制到项目中即可。


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